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

183
Vistas
JavaScript: ordene la matriz de objetos por propiedad calculada o por una propiedad existente si es igual
[ { name: 'Joe', scores: [1, 2, 3] }, { name: 'Jane', scores: [1, 2, 3] }, { name: 'John', scores: [1, 2, 3] } ]

¿Cómo hago una función que ordene los elementos primero por la suma de puntajes y luego por nombre?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Usando Array#sort , ordene la matriz por la suma de scores o name como alternativa (usando String#localeCompare )

 const arr = [ { name: 'Joe', scores: [1] }, { name: 'Jane', scores: [1, 2] }, { name: 'John', scores: [1, 2] } ]; const sum = (arr = []) => arr.reduce((total, num) => total + num, 0); const sorted = arr.sort((a, b) => sum(b.scores) - sum(a.scores) || a.name.localeCompare(b.name) ); console.log(sorted);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede tomar un Map para todas las sumas y el objeto como clave sin mutar los datos.

 const data = [{ name: 'Joe', scores: [1, 2, 3] }, { name: 'Jane', scores: [1, 4, 3] }, { name: 'John', scores: [1, 2, 1] }], add = (a, b) => a + b, sums = new Map(data.map(o => [o, o.scores.reduce(add, 0)])); data.sort((a, b) => sums.get(b) - sums.get(a) || a.name.localeCompare(b.name)); console.log(data);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

El paquete lodash podría ser útil

 const lodash = require('lodash') const list = [ { name: 'Joe', scores: [1, 2, 4] }, { name: 'Jane', scores: [1, 2, 3] }, { name: 'John', scores: [1, 2, 4] } ] const listWithSum = list.map(item => { return { ...item, sum: lodash.sum(item.scores) } }) const sortedList = lodash.orderBy(listWithSum, ['score', 'name'], ['desc', 'desc']) console.log(sortedList)
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