Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

88
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda