mozilla
Wyniki wyszukiwania

    Array.prototype.sort()

    Podsumowanie

    Sortuje elementy tablicy.

    Składnia

    arr.sort([compareFunction])

    Parametry

    compareFunction 
    jest nazwą funkcji porównującej elementy. Jeżeli parametr zostanie pominięty, tablica będzie posortowana w porządku leksykograficznym (alfabetycznie).

    Opis

    Jeżeli compareFunction nie zostanie podana, elementy zostaną posortowane leksykograficznie (alfabetycznie - słownikowo) według porównania ich reprezentacji znakowej (łańcucha znaków). Przykładowo "80" znajdzie się przed "9" w porządku leksykograficznym, pomimo że numerycznie 9 poprzedza 80.

    Jeżeli compareFunction zostanie podana, elementy tablicy zostaną posortowane odpowiednio do wartości zwracanej przez funkcję porównującą. Jeżeli a oraz b są dwoma porównywanymi elementami tablicy to:

    • compareFunction(a, b) zwróci wartość mniejszą od 0 - indeks elementu b będzie mniejszy niż indeks a (logicznie b < a).
    • compareFunction(a, b) zwróci 0 - pozostawia a oraz b w niezmienionej kolejności względem siebie, jednak w dalszym ciągu oba będą porównywane z innymi elementami (logicznie b = a). Uwaga: Standard ECMAscript nie gwarantuje niezmienionej kolejności (np. Mozilla wszystkie wersje do 2003 roku).
    • compareFunction(a, b) zwraca wartość większą od 0 - indeks elementu b będzie większy niż indeks a (logicznie b > a).

    Ogólna postać funkcji porównującej wygląda następująco:

    function compare(a, b) {
       if (a mniejsze niż b wg. kryteriów sortowania)
          return -1
       if (a większe od b wg. kryteriów sortowania)
          return 1
       // a równe b
       return 0
    }
    

    W celu porównania liczb, zamiast napisów, funkcja porównująca może odejmować b od a:

    function compareNumbers(a, b) {
       return a - b
    }
    

    Niektóre implementacje JavaScript wykonują sortowanie stabilne: kolejność elementów a i b nie jest zmieniana jeśli a i b są sobie równe. Jeżeli przed sortowaniem a jest w tablicy wcześniej niż b oraz a i b są sobie równe, to po sortowaniu ich kolejność będzie taka sama (niezależnie od tego, jak zmienią się pozycje elementów a i b).

    Przykłady

    Przykład: Tworzenie, wyświetlanie i sortowanie tablic

    Następujący przykład tworzy cztery tablice i wyświetla oryginalną tablicę, potem posortowane tablice. Tablice liczbowe są sortowane najpierw bez podania funkcji porównującej, następnie z taką funkcją.

    stringArray = new Array("Blue","Humpback","Beluga")
    numericStringArray = new Array("80","9","700")
    numberArray = new Array(40,1,5,200)
    mixedNumericArray = new Array("80","9","700",40,1,5,200)
    
    function compareNumbers(a, b) {
       return a - b
    }
    
    console.log("tablicaNapisów: " + stringArray.join())
    console.log("Posortowana: " + stringArray.sort())
    
    console.log("tablicaLiczbowa: " + numberArray.join())
    console.log("Posortowana bez funkcji porównującej: " + numberArray.sort())
    console.log("Posortowana z funkcją porównującą: " + numberArray.sort(compareNumbers))
    
    console.log("tablicaNapisówLiczbowych: " + numericStringArray.join())
    console.log("Posortowana bez funkcji porównującej: " + numericStringArray.sort())
    console.log("Posortowana z funkcją porównującą: " + numericStringArray.sort(compareNumbers))
    
    console.log("tablicaLiczbowaMieszna: " + mixedNumericArray.join())
    console.log("Posortowana bez funkcji porównującej: " + mixedNumericArray.sort())
    console.log("Posortowana z funkcją porównującą: " + mixedNumericArray.sort(compareNumbers))
    

    Ten przykład wyświetla następujące dane. Jak widać, przy zastosowaniu funkcji porównującej, liczby są sortowane prawidłowo niezależnie od tego czy są przedstawiane jako wartości liczbowe bądź też napisy.

    tablicaNapisów: Blue,Humpback,Beluga
    Posortowana: Beluga,Blue,Humpback
    
    tablicaLiczbowa: 40,1,5,200
    Posortowana bez funkcji porównującej: 1,200,40,5
    Posortowana z funkcją porównującą: 1,5,40,200
    
    tablicaNapisówLiczbowych: 80,9,700
    Posortowana bez funkcji porównującej: 700,80,9
    Posortowana z funkcją porównującą: 9,80,700
    
    tablicaLiczbowaMieszna: 80,9,700,40,1,5,200
    Posortowana bez funkcji porównującej: 1,200,40,5,700,80,9
    Posortowana z funkcją porównującą: 1,5,9,40,80,200,700
    

    Zobacz także

    Autorzy i etykiety dokumentu

    Ostatnia aktualizacja: teoli,
    Ukryj panel boczny