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