Sortowanie tablic JavaScript
- Poprzednia strona Szukanie w tablicy JS
- Następna strona Iteracja tablic JS
sort()
Metoda jest jednym z najpotężniejszych metod tablicy.
Sortowanie tablicy
sort()
Metoda sortuje tablicę w porządku alfabetycznym:
Przykład
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortuj elementy w fruits
odwróć tablicę
reverse()
metoda odwraca elementy w tablicy.
Możesz użyć tego do sortowania tablicy w porządku malejącym:
Przykład
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortuj elementy w fruits fruits.reverse(); // Odwróć kolejność elementów
sortowanie liczb
Domyślnie:sort()
Funkcja sortuje się:ciężarówsortuje wartości w określonej kolejności.
Funkcja ta jest bardzo odpowiednia dla ciągów znaków ("Apple" jest przed "Banana").
Jednak, jeśli liczby są sortowane jako ciąg znaków, "25" jest większe niż "100", ponieważ "2" jest większe niż "1".
Dlatego:sort()
Metoda może generować niewłaściwe wyniki podczas sortowania liczb.
PoprzezFunkcja porównawczaAby naprawić ten problem:
Przykład
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Użyj tej samej techniki do sortowania tablicy w porządku malejącym:
Przykład
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Funkcja porównawcza
Cel funkcji porównawczej to zdefiniowanie innej kolejności sortowania.
Funkcja porównawcza powinna zwracać ujemną, zero lub dodatnią wartość, w zależności od parametrów:
function(a, b){return a-b}
Kiedy: sort()
Funkcja porównuje dwie wartości, wysyła je do funkcji porównawczej i sortuje je na podstawie zwróconej wartości (ujemnej, zero lub dodatniej).
Przykład:
Kiedy porównujemy 40 i 100:sort()
Metoda wywołuje funkcję porównawczą function(40,100).
Funkcja oblicza 40-100 i zwraca -60 (ujemna wartość).
Funkcja sortowania umieści 40 jako wartość niższą niż 100.
Możesz użyć poniższego kodu do testowania sortowania liczbowego i alfabetycznego:
<button onclick="myFunction1()">Sortuj według liter</button> <button onclick="myFunction2()">Sortuj według liczby</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
sortowanie tablicy w sposób losowy
Przykład
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Znajdowanie największej (lub najmniejszej) wartości tablicy
JavaScript nie dostarcza wbudowanej funkcji do wyszukiwania największej lub najmniejszej wartości w tablicy.
Po posortowaniu tablicy, możesz użyć indeksów, aby uzyskać najwyższą lub najniższą wartość.
sortowanie rosnące:
Przykład
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // teraz points[0] zawiera najniższą wartość // a points[points.length-1] zawiera najwyższą wartość
sortowanie malejące:
Przykład
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // teraz points[0] zawiera najwyższą wartość // a points[points.length-1] zawiera najniższą wartość
Jeśli potrzebujesz tylko znaleźć najwyższą lub najniższą wartość, sortowanie całej tablicy jest bardzo efektywnym sposobem.
do użycia Math.max() na tablicy
Możesz użyć Math.max.apply
aby znaleźć najwyższą wartość w tablicy:
Przykład
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
równa się Math.max(1, 2, 3)
.
do użycia Math.min() na tablicy
Możesz użyć Math.min.apply
aby znaleźć najniższą wartość w tablicy:
Przykład
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
równa się Math.min(1, 2, 3)
.
Moje metody Min / Max w JavaScript
Najbardziej efektywnym rozwiązaniem jest użycie "własnego" metody.
Ta funkcja przechodzi przez tablicę, porównując znaleziony najwyższy wartość z każdą wartością:
Przykład (wyszukiwanie Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Ta funkcja przechodzi przez tablicę, porównując znaleziony najniższy wartość z każdą wartością:
Przykład (wyszukiwanie Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { jeśli (arr[len] < min) { min = arr[len]; } } return min; }
Sortowanie tablic obiektów
Tablice JavaScript często zawierają obiekty:
Przykład
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Nawet jeśli obiekty mają różne typy danych atrybutów:sort()
Metoda może nadal być używana do sortowania tablic.
Rozwiązaniem jest użycie funkcji porównawczej do porównywania wartości atrybutów:
Przykład
cars.sort(function(a, b){zwróć a.year - b.year});
Porównywanie atrybutów string jest bardziej skomplikowane:
Przykład
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); jeśli (x < y) {zwróć -1;} jeśli (x > y) {zwróć 1;} zwróć 0; });
- Poprzednia strona Szukanie w tablicy JS
- Następna strona Iteracja tablic JS