javascript - Sortarea unui array cu valoare principală și secundară
Există o modalitate de a sorta un tablou de obiecte folosind o valoare primară și una secundară? Ceea ce vreau să spun este un tablou ca acesta:
[
{ primary: 0, secondary: 'a' },
{ primary: 1, secondary: 'a' },
{ primary: 1, secondary: 'b' },
{ primary: 0, secondary: 'b' }
]
va fi sortat folosind valoarea primară, astfel încât primele două obiecte cu valoarea primară de 0 vin primele, apoi valorile de 1 vin pe locul doi, și apoi va fi din nou sortat după valoarea secundară și va rezulta că array-ul devine
[
{ primary: 0, secondary: 'a' },
{ primary: 0, secondary: 'b' },
{ primary: 1, secondary: 'a' },
{ primary: 1, secondary: 'b' }
]
Nu am folosit cu adevărat Array.sort() înainte, așa că încerc să aflu cum să fac asta, orice ajutor va fi apreciat!
Răspuns #1
Poți folosi Array#sort.
Compararea ar fi mai întâi după primary (numeric), sau după secondary dacă sunt egale (șir folosind String#localeCompare)
const arr = [ { primary: 0, secondary: 'a' }, { primary: 1, secondary: 'a' }, { primary: 1, secondary: 'b' }, { primary: 0, secondary: 'b' } ];
const res = arr.sort((a, b) =>
a.primary - b.primary || a.secondary.localeCompare(b.secondary)
);
console.log(res);