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

139
Views
Ordenar una matriz de Objetos mientras se mantienen un par de Objetos en las últimas posiciones

Tengo un poco de dificultad para clasificar una serie de objetos. Por el momento tengo un conjunto de datos como ordenar

 [ { "index":"football", "values":0.3, "id":"1" }, { "index":"Unknown", "values":0.5, "id":"2" }, { "index":"golf", "values":0.1, "id":"3" }, { "index":"cricket", "values":0.222, "id":"4", }, { "index":"Other", "values":0.333, "id":"5" }, { "index":"netball", "values":0.753, "id":"6", }, ]

Lo que estoy tratando de hacer es clasificar esto en función de sus valores, con el más alto en la parte superior. Para hacer esto, hice

 myDataSet.sort((a, b) => parseFloat(b.values) - parseFloat(a.values));

Esto parece funcionar. Sin embargo, es la segunda parte con la que estoy luchando. Cualquiera que sea el orden en el que se ordene, siempre necesito Otro segundo desde abajo y Desconocido abajo. Así que lo anterior debería convertirse en esto

 [ { "index":"netball", "values":0.753, "id":"6", }, { "index":"football", "values":0.3, "id":"1" }, { "index":"cricket", "values":0.222, "id":"4", }, { "index":"golf", "values":0.1, "id":"3" }, { "index":"Other", "values":0.333, "id":"5" }, { "index":"Unknown", "values":0.5, "id":"2" }, ]

Intenté usar un filtro, esto parece ponerlos en la parte inferior, pero luego el resto ya no está ordenado

 myDataSet.filter((e) => e.index === 'Other') .filter((e) => e.index === 'Unknown') .sort((a, b) => parseFloat(b.values) - parseFloat(a.values));

¿Cómo puedo ordenar según sus valores pero mantener Otro y Desconocido en la parte inferior?

Gracias

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

0

Sugeriría crear una función personalizada para determinar el orden de clasificación, digamos getSortValue() y luego usar Array.sort():

 let a = [ { "index":"football", "values":0.3, "id":"1" }, { "index":"Unknown", "values":0.5, "id":"2" }, { "index":"golf", "values":0.1, "id":"3" }, { "index":"cricket", "values":0.222, "id":"4", }, { "index":"Other", "values":0.333, "id":"5" }, { "index":"netball", "values":0.753, "id":"6", }, ] function getSortValue(obj) { const key = obj.index.toLowerCase(); return { "unknown": -2, "other": -1 }[key] || obj.values; } console.log(a.sort((a,b) => getSortValue(b) - getSortValue(a)));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Puede ordenar la matriz directamente con un objeto para el orden deseado y un valor predeterminado para todos los demás valores desconocidos.

Luego use values directamente sin conversión.

 const data = [{ index: "netball", values: 0.753, id: "6" }, { index: "football", values: 0.3, id: "1" }, { index: "cricket", values: 0.222, id: "4" }, { index: "golf", values: 0.1, id: "3" }, { index: "Other", values: 0.333, id: "5" }, { index: "Unknown", values: 0.5, id: "2" }], bottom = { Other: 1, Unknown: 2 }; data.sort((a, b) => (bottom[a.index] || 0) - (bottom[b.index] || 0) || b.values - a.values ); console.log(data);
 .as-console-wrapper { max-height: 100% !important; top: 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!