[ Leksykon ] [ JavaScript ] [ Tablice ] [ Metody ] [ Właściwości ] [ Array() ]
Array.prototype.sort()
[_] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]
Przykłady:
const tablica = ["A", , "C", "D", "E"];
tablica.sort();
console.log(tablica);
// Array ["A", "C", "D", "E", undefined]
const tablicaX = [1, 32, 6, 18, 1001, -1];
tablicaX.sort();
console.log(tablicaX);
// Array [-1, 1, 1001, 18, 32, 6]
const tab = [
{ name: "E", value: 1 },
{ name: "C", value: 2 },
{ name: "A", value: 3 },
{ name: "D", value: 4 },
{ name: "F", value: 5 },
{ name: "B", value: 6 },
];
// sortowanie po wartości
tab.sort((a, b) => a.value - b.value);
console.log(tab);
// Array [Object { name: "E", value: 1 }, Object { name: "C", value: 2 },
// Object { name: "A", value: 3 }, Object { name: "D", value: 4 },
// Object { name: "F", value: 5 }, Object { name: "B", value: 6 }]
// sortowanie po nazwie
tab.sort((a, b) => {
const nazwaA = a.name.toUpperCase(); // nie zwracaj na wielkość liter
const nazwaB = b.name.toUpperCase(); // nie zwracaj na wielkość liter
if (nazwaA < nazwaB) {
return -1;
}
if (nazwaA > nazwaB) {
return 1;
}
return 0;
});
console.log(tab);
// Array [Object { name: "A", value: 3 }, Object { name: "B", value: 6 },
// Object { name: "C", value: 2 }, Object { name: "D", value: 4 },
// Object { name: "E", value: 1 }, Object { name: "F", value: 5 }]
const tablicaTXT = ["E", , "D", "C", "A"];
const tablicaNR = [52,7,1,125,10];
const tavlicaTXTN = ["13", "2", "471"];
const tavlicaTXTNR = ["13", "2", "471", 52, 7, 1,125 ,10];
function sortowanie(a, b) {
return a - b;
}
console.log(tablicaTXT.join()); // "E,,D,C,A"
console.log(tablicaTXT.sort()); // Array ["A", "C", "D", "E", undefined]
console.log(tablicaNR.join()); // "52,7,1,125,10"
console.log(tablicaNR.sort()); // Array [1, 10, 125, 52, 7]
console.log(tablicaNR.sort(sortowanie)); // Array [1, 7, 10, 52, 125]
console.log(tavlicaTXTN.join()); // "13,2,471"
console.log(tavlicaTXTN.sort()); // Array ["13", "2", "471"]
console.log(tavlicaTXTN.sort(sortowanie)); // Array ["2", "13", "471"]
console.log(tavlicaTXTNR.join()); // "13,2,471,52,7,1,125,10"
console.log(tavlicaTXTNR.sort()); // Array [1, 10, 125, "13", "2", "471", 52, 7]
console.log(tavlicaTXTNR.sort(sortowanie)); // Array [1, "2", 7, 10, "13", 52, 125, "471"]
const tablica = ["c é", "é", "r", "a é", "x é", "a", "é x"];
// localeCompare() - Do sortowania ciągów zawierających znaki spoza zestawu ASCII
tablica.sort((a, b) => a.localeCompare(b));
console.log(tablica);
// Array ["a", "a é", "c é", "é", "é x", "r", "x é"]
const tablica = ["B", , "D", "C", "A"];
const tabS = [...tablica].sort(); // kopia tablicy
console.log(tablica);
// Array ["B", undefined, "D", "C", "A"]
console.log(tabS);
// Array ["A", "B", "C", "D", undefined]
tabS[0] = "X";
console.log(tablica);
// Array ["B", undefined, "D", "C", "A"]
console.log(tabS);
// Array ["X", "B", "C", "D", undefined]
const tablicaNR = [4, 1, 5, 3, 2];
const tabNR = tablicaNR.sort((a, b) => a - b);
console.log(tablicaNR);
// Array [1, 2, 3, 4, 5]
tabNR[0] = 99;
console.log(tablicaNR);
// Array [99, 2, 3, 4, 5]
console.log(tablicaNR[0]);
// 99
const tablica = {
length: 3,
informacja: "brak",
0: 9,
2: 3,
5: 5,
};
console.log(Array.prototype.sort.call(tablica));
// Object { 0: 3, 1: 9, 5: 5, length: 3, informacja: "brak" }
Zobacz też:
Metoda Array.sort() sortuje elementy tablicy na miejscu i zwraca odwołanie do tej samej tablicy, teraz posortowanej. Domyślny porządek sortowania jest rosnący, zbudowany na konwersji elementów na łańcuchy, a następnie porównaniu ich sekwencji wartości jednostek kodu UTF-16. Aby posortować elementy w tablicy bez mutowania oryginalnej tablicy, użyj toSorted(). Parametr funkcja definiująca porządek sortowania. Zwracana wartość powinna być liczbą, której dodatniość wskazuje na względną kolejność dwóch elementów. Funkcja jest wywoływana z następującymi argumentami: Pierwszy element do porównania. Nigdy nie będzie undefined. Drugi element dla porównania. Nigdy nie będzie undefined. W przypadku pominięcia elementy tablicy są konwertowane na ciągi znaków, a następnie sortowane zgodnie z wartością punktu kodowego Unicode każdego znaku. Zwracana wartość odwołanie do oryginalnej tablicy, teraz posortowane. Zauważ, że tablica jest sortowana w miejscu i nie jest wykonywana żadna kopia. Jeśli parametr podano, wszystkie undefined elementy niebędące tablicami są sortowane przez przekształcenie ich w ciągi i porównanie ciągów w kolejności jednostek kodu UTF-16. W sortowaniu numerycznym 5 występuje przed 60, ale ponieważ liczby są konwertowane na łańcuchy, „60” występuje przed „5” w porządku Unicode. Wszystkie undefined elementy są sortowane do końca tablicy. Puste miejsca są przenoszone na koniec tablicy i zawsze pojawiają się po wszystkich undefined.
const tablica = [3, 1, 4, 1, 5, 9];
const parametrporownania = (a, b) => (a > b ? -1 : 0);
tablica.sort(parametrporownania);
porządek sortowania parametrporownania(a, b) wartość zwracana, > 0 sortować a po b np [b, a], < 0 posortuj a przed b np [a, b], === 0 zachowaj pierwotną kolejność a i b.
Zatem funkcja porównująca ma następującą postać:
function parametrporownania(a, b) {
// a jest mniejsze niż b według jakiegoś kryterium porządkowania
if (a jest mniejsze niż b według jakiegoś kryterium porządkowania) {
return -1;
}
// a jest większe niż b według kryterium porządkowania
if (a jest większe niż b według kryterium porządkowania) {
return 1;
}
// a musi być równe b
return 0;
}
Linki:
localeCompare() - Do sortowania ciągów zawierających znaki spoza zestawu ASCII
Array.toSorted() - Metoda Array() zwraca nową tablicę z elementami posortowanymi rosnąco, bez modyfikowania oryginalnej tablicy