Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

87
Visualizações
Cuente todos los valores en el objeto donde X es la primera letra clave

Me gustaría contar todos los valores donde aparece una letra primero y devolver la letra con al menos la mitad de todos los valores en mi objeto, por ejemplo, asumo que tengo un objeto como este

 const sample = { "A,B,C": 4, "B,C,A": 3, "C,B,A": 2, "A,C,B": 2 };

Devolvería A porque si cuenta todos los valores donde aparece A primero, obtendría 6 (4+2)

Esto es lo que tengo actualmente:

 for (let votes of Object.values(sample)) { sum += votes } stretchWin = Math.round(sum / 2) winner = Object.entries(sample) .filter(([, val]) => val >= stretchWin) .map(([keys]) => keys)

Con esto obtengo una matriz vacía porque no estoy contando todos los valores asignados a A

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Itere sobre toda la muestra primero para obtener una suma de los valores por la primera letra primero, luego itere sobre ese nuevo objeto para identificar qué valores coinciden con el objetivo de la mitad del total.

 const sample = { "A,B,C": 4, "B,C,A": 3, "C,B,A": 2, "A,C,B": 2 }; const sumByChar = {}; for (const [key, value] of Object.entries(sample)) { const char = key[0]; sumByChar[char] = (sumByChar[char] ?? 0) + value; } let sum = 0; for (let votes of Object.values(sample)) { sum += votes } const targetSum = Math.round(sum / 2); const winners = Object.entries(sumByChar) .filter(([, val]) => val >= targetSum) .map(([key]) => key); console.log(winners);

about 4 years ago · Juan Pablo Isaza Relatório

0

No estoy completamente seguro de lo que quiere decir cuál debería ser el resultado. Si te entiendo bien quieres algo como esto??

 const sample = { "A,B,C": 4, "B,C,A": 3, "C,B,A": 2, "A,C,B": 2 }; const totalSum = Object.values(sample).reduce( (previousValue, currentValue) => previousValue + currentValue, 0 ); const stretchWin = Math.round(totalSum / 2); const winner = Object.entries(sample) .filter(([key, value]) => { const isFirstLetterA = key.startsWith("A"); return isFirstLetterA || value >= stretchWin; }) .map(([key, value]) => value) .reduce((previousValue, currentValue) => previousValue + currentValue, 0); console.log(winner);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda