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

182
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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