Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
¿Cómo filtrar solo un elemento de cada tipo?

Dada una serie de objetos tales como

 [ {name: "john", power: 1}, {name: "john", power: 129391}, {name: "john", power: 91}, {name: "philip", power: 33}, {name: "philip", power: 883}, {name: "philip", power: 3112333}, ]

Me gustaría obtener solo un elemento de cada name : el elemento con más power . El resultado sería:

 {name: "john", power: 129391}, {name: "philip", power: 3112333},

Simplemente no sé cómo filtrar uno de cada uno. Puedo filtrar elementos con el mismo nombre pero no con nombres diferentes items.filter(item => item.name === 'john')

Una cosa que pensé fue comparar los elementos con los elementos que ya están en la matriz resultante pero que no han encontrado una forma de acceder a la matriz resultante.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Intenta reducir

 const data = [ {name: "john", power: 1}, {name: "john", power: 129391}, {name: "john", power: 91}, {name: "philip", power: 33}, {name: "philip", power: 883}, {name: "philip", power: 3112333}, ] const powerUsersObj = data.reduce((acc,cur) => { acc[cur.name] = acc[cur.name] ? Math.max(acc[cur.name],cur.power) : cur.power return acc },{}) console.log(powerUsersObj) const powerUsersArr = Object.entries(powerUsersObj).map(entry => ({name:entry[0],power:entry[1]})) console.log(powerUsersArr)

about 4 years ago · Juan Pablo Isaza Report

0

Use algún diccionario o mapa para realizar un seguimiento de las selecciones anteriores y reemplace los elementos según sea necesario durante la iteración.

 var arr = [ {name: "john", power: 1}, {name: "john", power: 129391}, {name: "john", power: 91}, {name: "philip", power: 33}, {name: "philip", power: 883}, {name: "philip", power: 3112333}, ] var selectedItems = {} arr.forEach(item => { const key = item.name; if(selectedItems[key] && selectedItems[key].power < item.power) { selectedItems[key] = item } else if(!selectedItems[key]) { selectedItems[key] = item } }); console.log(Object.values(selectedItems))

about 4 years ago · Juan Pablo Isaza Report

0

Recorra la primera matriz y acumule las claves únicas que desea conservar en otra matriz. Luego, vuelva a atravesar, haciendo las comprobaciones que desee en función de cada clave única (en esta power de comparación de clave):

 let input = [ { name: "john", power: 1 }, { name: "john", power: 129391 }, { name: "john", power: 91 }, { name: "philip", power: 33 }, { name: "philip", power: 883 }, { name: "philip", power: 3112333 }, ]; let uniqueKeys = input .map((e) => e.name) .filter((key, i) => input.findIndex((e) => e.name === key) === i); let output = uniqueKeys.map( (key) => input .filter((e) => e.name === key) .sort((entryA, entryB) => entryB.power - entryA.power)[0] );
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!