Samouczek JS

JS DOM Wprowadzenie do JS JS Dokąd Wyjście JS Oświadczenia JS Składnia JS Komentarze JS Zmienne JS JS Let JS Const Operatorzy JS Arytmetyka JS Zadanie JS Typy danych JS Funkcje JS Obiekty JS Wydarzenia JS JS Strings Metody ciągów JS Wyszukiwanie ciągów JS Szablony JS String Numery JS Metody liczbowe JS Tablice JS Metody macierzowe JS Sortowanie tablic JS Iteracja tablicy JS JS Array Const JS Daty Formaty daty JS JS Data Pobierz metody Metody ustawiania daty JS Matematyka JS JS losowo JS Booleans Porównania JS Warunki JS Przełącznik JS Pętla JS dla Pętla JS dla In Pętla JS dla Of Pętla JS, podczas gdy Przerwa JS Iterable JS Zestawy JS Mapy JS Typ JS Konwersja typu JS JS Bitwise JS RegExp Błędy JS Zakres JS JS Podnoszenie Tryb ścisły JS JS to słowo kluczowe Funkcja strzałki JS Klasy JS JS JSON Debugowanie JS Przewodnik po stylu JS Najlepsze praktyki JS Błędy JS Wydajność JS JS słowa zastrzeżone

Wersje JS

Wersje JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Krawędź Historia JS

Obiekty JS

Definicje obiektów Właściwości obiektu Metody obiektowe Wyświetlanie obiektów Akcesoria do obiektów Konstruktorzy obiektów Prototypy obiektów Iterowalne obiekty Zestawy obiektów Mapy obiektów Odniesienie do obiektu

Funkcje JS

Definicje funkcji Parametry funkcji Wywołanie funkcji Wywołanie funkcji Funkcja Zastosuj Zamknięcia funkcji

Klasy JS

Wprowadzenie do zajęć Dziedziczenie klas Klasa statyczna

JS Async

Oddzwaniania JS Asynchroniczny JS JS Obietnice JS Async/Oczekiwanie

JS HTML DOM

Wprowadzenie do DOM Metody DOM Dokument DOM Elementy DOM DOM HTML Formularze DOM DOM CSS Animacje DOM Wydarzenia DOM Odbiornik zdarzeń DOM Nawigacja DOM Węzły DOM Kolekcje DOM Listy węzłów DOM

Zestawienie komponentów przeglądarki JS

Okno JS Ekran JS Lokalizacja JS Historia JS JS Navigator Wyskakujący alert JS Czas JS Pliki cookie JS

JS Web API

Wprowadzenie do internetowego interfejsu API Interfejs API formularzy internetowych Interfejs API historii online API przechowywania danych w sieci Web Web Worker API Internetowy interfejs API pobierania Internetowy interfejs API geolokalizacji

JS AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

JS JSON

Wprowadzenie do JSON Składnia JSON JSON a XML Typy danych JSON Analiza JSON JSON Obiekty JSON Tablice JSON Serwer JSON JSON PHP JSON HTML JSON JSONP

JS kontra jQuery

Selektory jQuery jQuery HTML jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS płótno JS Działka JS Chart.js Wykres JS Google JS D3.js

Przykłady JS

Przykłady JS JS HTML DOM Wejście JS HTML Obiekty HTML JS Wydarzenia JS HTML Przeglądarka JS Edytor JS Ćwiczenia JS JS Quiz Certyfikat JS

Referencje JS

Obiekty JavaScript Obiekty HTML DOM


Tablice sortujące JavaScript


Sortowanie tablicy

Metoda sort()sortuje tablicę alfabetycznie:

Przykład

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

Odwracanie tablicy

Metoda reverse()odwraca elementy w tablicy.

Możesz go użyć do posortowania tablicy w kolejności malejącej:

Przykład

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

Sortowanie numeryczne

Domyślnie sort()funkcja sortuje wartości jako ciągi .

Działa to dobrze w przypadku ciągów ("Apple" znajduje się przed "Banana").

Jeśli jednak liczby są sortowane jako ciągi, „25” jest większe niż „100”, ponieważ „2” jest większe niż „1”.

Z tego powodu sort()metoda da błędny wynik podczas sortowania liczb.

Możesz to naprawić, udostępniając funkcję porównania :

Przykład

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

Użyj tej samej sztuczki, aby posortować tablicę malejąco:

Przykład

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});


Funkcja porównania

Celem funkcji porównania jest zdefiniowanie alternatywnej kolejności sortowania.

Funkcja porównania powinna zwrócić wartość ujemną, zerową lub dodatnią, w zależności od argumentów:

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

Gdy sort()funkcja porównuje dwie wartości, wysyła wartości do funkcji porównania i sortuje wartości zgodnie z wartością zwróconą (ujemną, zerową, dodatnią).

Jeśli wynik jest ujemny a, jest sortowany przed b.

Jeśli wynik jest pozytywny b, sortowane jest przed a.

Jeśli wynikiem jest 0, nie są dokonywane żadne zmiany w kolejności sortowania dwóch wartości.

Przykład:

Funkcja Compare porównuje wszystkie wartości w tablicy, po dwie wartości na raz (a, b).

Porównując 40 i 100, sort()metoda wywołuje funkcję Compare(40, 100).

Funkcja oblicza 40 - 100 (a - b), a ponieważ wynik jest ujemny (-60), funkcja sortowania posortuje 40 jako wartość mniejszą niż 100.

Możesz użyć tego fragmentu kodu, aby poeksperymentować z sortowaniem liczbowym i alfabetycznym:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const 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 kolejności losowej

Przykład

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});


Metoda Fishera Yatesa

Powyższy przykład, array .sort(), nie jest dokładny, faworyzuje niektóre liczby nad innymi.

Najpopularniejsza poprawna metoda, nazywana tasowaniem Fishera Yatesa, została wprowadzona do nauki o danych już w 1938 roku!

W JavaScript metodę można przetłumaczyć na to:

Przykład

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * i)
  let k = points[i]
  points[i] = points[j]
  points[j] = k
}


Znajdź najwyższą (lub najniższą) wartość tablicy

Nie ma wbudowanych funkcji do znajdowania wartości maksymalnej lub minimalnej w tablicy.

Jednak po posortowaniu tablicy można użyć indeksu, aby uzyskać najwyższe i najniższe wartości.

Sortowanie rosnąco:

Przykład

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Sortowanie malejąco:

Przykład

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

Sortowanie całej tablicy jest bardzo nieefektywną metodą, jeśli chcesz znaleźć tylko najwyższą (lub najniższą) wartość.


Używanie Math.max() na tablicy

Możesz użyć Math.max.apply, aby znaleźć najwyższą liczbę w tablicy:

Przykład

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3])jest równoważne Math.max(1, 2, 3).


Używanie Math.min() na tablicy

Możesz użyć Math.min.apply, aby znaleźć najniższą liczbę w tablicy:

Przykład

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3])jest równoważne Math.min(1, 2, 3).


Moje min/maks. metody JavaScript

Najszybszym rozwiązaniem jest zastosowanie metody „domowej roboty”.

Ta funkcja przegląda tablicę porównując każdą wartość z najwyższą znalezioną wartością:

Przykład (Znajdź maksimum)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

Ta funkcja przegląda tablicę porównując każdą wartość z najniższą znalezioną wartością:

Przykład (Znajdź min)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}


Sortowanie tablic obiektów

Tablice JavaScript często zawierają obiekty:

Przykład

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

Nawet jeśli obiekty mają właściwości różnych typów danych, sort()metoda może służyć do sortowania tablicy.

Rozwiązaniem jest napisanie funkcji porównania do porównania wartości właściwości:

Przykład

cars.sort(function(a, b){return a.year - b.year});

Porównywanie właściwości ciągów jest nieco bardziej złożone:

Przykład

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

Pełne odniesienie do tablicy

Aby uzyskać pełne odniesienie do tablicy, przejdź do naszego:

Pełne odniesienie do tablicy JavaScript .

Odniesienie zawiera opisy i przykłady wszystkich właściwości i metod Array.

Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Użyj poprawnej metody Array, aby posortować fruitstablicę alfabetycznie.

const fruits = ["Banana", "Orange", "Apple", "Kiwi"];
;