Jak třídit pole v JavaScriptu pomocí metody sort() [Příklady]

Tento tutoriál vám ukáže, jak třídit pole v programovacím jazyce JavaScript pomocí pole sort() a uveďte několik příkladů kódu.

Co je pole v JavaScriptu?

Pole je typ proměnné JavaScriptu, která může obsahovat řadu proměnných, odkazy na proměnné nebo hodnoty.

Je to jako seznam položek. Každá položka nebo prvek v poli má hodnotu a pozici. Pozice je pořadí, ve kterém se prvek objeví v poli, a nazývá se index . Indexy mají nulový index – to znamená, že se začnou počítat na pozici 0 – takže první prvek v poli je na indexu 0, druhá položka na indexu 1 atd.

V JavaScriptu je pole konstruováno pomocí hranatých závorek ([]), které obsahuje seznam hodnot pole oddělený čárkami:

var myArray = ['dog', 'cat', 'pig', 'parrot'];

Pole sort() Metoda

Hodnoty v poli lze znovu uspořádat (změnou pořadí, ve kterém se zobrazují, a jejich indexu ). The sort() metodu lze použít k přeuspořádání prvků v poli na základě funkce, která porovnává hodnoty v poli.

JavaScript Array sort() Syntaxe metody

Syntaxe JavaScriptu pro pole sort() metoda je následující:

array.sort(COMPARE_FUNCTION)

Všimněte si, že:

  • pole může být jakákoli proměnná typu pole
  • COMPARE_FUNCTION je volitelné porovnávací funkce
    • Pokud není zadán, prvky v poli budou seřazeny podle hodnoty řetězce
    • Funkce COMPARE_FUNCTION by měl akceptovat dva parametry – dva prvky, které mají být porovnány, aby definovaly řazení
    • Funkce COMPARE_FUNCTION se pak spustí na každém prvku pole a prvku, který za ním následuje, aby se pole seřadilo
  • pole budou seřazeny na místě – původní pole bude upraveno a prvky v něm setříděny, nikoli vráceno duplicitní setříděné pole

Příklady řazení pole

Pokud do sort() není předána žádná porovnávací funkce hodnoty v ní budou převedeny na řetězce a seřazeny podle hodnoty UNICODE – ve skutečnosti seřazení abecedně ve vzestupném pořadí:

var myArray = ['dog', 'cat', 'pig', 'parrot'];
myArray.sort();
console.log(myArray);

Pole bude nyní obsahovat seřazené hodnoty:

["cat", "dog", "parrot", "pig"]

Řazení tímto způsobem lze také provést v sestupném pořadí jednoduchým obrácením setříděného pole:

var myArray = ['dog', 'cat', 'pig', 'parrot'];
myArray.sort();
myArray.reverse();
console.log(myArray);

Pole bude nyní obsahovat:

["pig", "parrot", "dog", "cat"]

Řazení pole s příklady porovnávací funkce

Porovnávací funkce lze použít k třídění polí na základě vašich vlastních kritérií.

Porovnání čísel

Níže uvedený kód použije funkci porovnání k řazení čísel ve vzestupném pořadí.

var myNumbers = [1, 5, 2, 3, 6, 10];
myNumbers.sort(function(value1, value2) {
        return value1 - value2;
    }); 
console.log(myNumbers);

Toto je jednoduchý příklad toho, jak funguje funkce porovnání. Výsledek hodnota1 – hodnota2 bude negativní pokud hodnota2 je větší než hodnota1 nebo 0 pokud jsou stejné a jinak pozitivní . Hodnoty v poli lze tedy třídit podle toho, zda je návratová hodnota hodnoty řazení kladná, záporná nebo nulová.

Porovnání objektů (a dalších hodnot)

Porovnání může mít libovolnou formu, pokud lze vrácenou hodnotu analyzovat jako kladnou, zápornou nebo nulovou číselnou hodnotu. To vám umožní napsat vlastní logiku porovnání, která bude vyhovovat vašemu scénáři použití.

Níže je definováno pole objektů, které obsahuje seznam domácích mazlíčků – jejich jméno, jaké zvíře to je a jejich věk.

Pole se pak třídí pomocí funkce řazení, která porovnává věk v rámci každého objektu – POKUD to není ryba Moe. Vždy bude na prvním místě v seřazeném poli podle logiky řazení:

var myPets = [
    { name: 'Shemp', animal: "dog", age: 4 },
    { name: 'Larry', animal: "cat", age: 1 },
    { name: 'Moe', animal: "fish", age: 6 },
    { name: 'Curly', animal: "parrot", age: 5 }
];

myPets.sort(function(value1, value2) {
    if(value2.name === 'Moe') return 1;
    return value1.age - value2.age;
});

console.log(myPets);

Náhodné rozdělení JavaScriptových polí

Pole mohou být také náhodná – o tom se budeme věnovat v samostatném článku zde.