Výukový program JS

JS HOME Úvod do JS JS Kam vést Výstup JS JS prohlášení Syntaxe JS Komentáře JS JS proměnné JS Let JS Const Operátoři JS JS aritmetika Zadání JS JS datové typy Funkce JS JS objekty Události JS JS struny JS String Methods JS String Search Šablony řetězců JS JS čísla Metody čísel JS JS Arrays Metody JS Array JS Array Sort Iterace pole JS JS Array Const JS Termíny Formáty data JS JS metody získávání data JS metody nastavení data JS Math JS Náhodný JS Booleans JS Srovnání Podmínky JS Přepínač JS JS Loop For JS Loop For In JS Loop For Of Zatímco JS Loop JS Break JS Iterables Sady JS Mapy JS Typ JS Konverze typu JS JS Bitwise JS RegExp Chyby JS Rozsah JS JS Zvedací zařízení Přísný režim JS JS toto klíčové slovo Funkce šipky JS JS třídy JS JSON Ladění JS Průvodce stylem JS JS Best Practices Chyby JS Výkon JS JS Reserved Words

Verze JS

Verze JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historie JS

JS objekty

Definice objektů Vlastnosti objektu Objektové metody Zobrazení objektu Objektové přístupové objekty Konstruktory objektů Prototypy objektů Iterovatelné objekty Sady objektů Mapy objektů Reference objektu

Funkce JS

Definice funkcí Funkční parametry Vyvolání funkce Volání funkce Funkce Použít Funkční uzávěry

JS třídy

Úvod do třídy Třídní dědičnost Třída Statická

JS Async

JS zpětná volání JS asynchronní JS Sliby JS Async/Await

JS HTML DOM

Úvod do DOM Metody DOM Dokument DOM Prvky DOM DOM HTML Formuláře DOM DOM CSS DOM animace Události DOM DOM Event Listener Navigace DOM DOM uzly Kolekce DOM Seznamy uzlů DOM

Kusovník prohlížeče JS

Okno JS Obrazovka JS Umístění JS Historie JS JS Navigator Popup Alert JS Časování JS Soubory cookie JS

Webová rozhraní API JS

Úvod do webového rozhraní API Web Forms API Webová historie API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

Úvod do AJAXu AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

JS JSON

Úvod do JSON Syntaxe JSON JSON vs XML Datové typy JSON Analýza JSON JSON Stringify Objekty JSON Pole JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selektory jQuery HTML jQuery jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Příklady JS

Příklady JS JS HTML DOM Vstup HTML JS JS HTML objekty JS HTML události Prohlížeč JS Editor JS Cvičení JS JS kvíz Certifikát JS

JS Reference

Objekty JavaScriptu HTML DOM objekty


Pole řazení JavaScriptu


Třídění pole

Metoda sort()seřadí pole podle abecedy:

Příklad

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

Obrácení pole

Metoda reverse()obrátí prvky v poli.

Můžete jej použít k seřazení pole v sestupném pořadí:

Příklad

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

Číselné řazení

Ve výchozím nastavení sort()funkce třídí hodnoty jako řetězce .

To funguje dobře pro řetězce ("Apple" je před "Banana").

Pokud jsou však čísla seřazena jako řetězce, "25" je větší než "100", protože "2" je větší než "1".

Z tohoto důvodu sort()způsobí při řazení čísel nesprávný výsledek.

Můžete to opravit poskytnutím funkce porovnání :

Příklad

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

Použijte stejný trik k seřazení pole sestupně:

Příklad

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


Funkce porovnání

Účelem porovnávací funkce je definovat alternativní pořadí řazení.

Funkce porovnání by měla vrátit zápornou, nulovou nebo kladnou hodnotu v závislosti na argumentech:

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

Když sort()funkce porovná dvě hodnoty, odešle hodnoty do porovnávací funkce a seřadí hodnoty podle vrácené (záporné, nulové, kladné) hodnoty.

Pokud je výsledek negativní, aseřadí se před b.

Pokud je výsledek kladný, bseřadí se před a.

Pokud je výsledek 0, neprovedou se žádné změny v pořadí řazení dvou hodnot.

Příklad:

Funkce porovnání porovná všechny hodnoty v poli, dvě hodnoty najednou (a, b).

Při porovnávání 40 a 100 sort()metoda volá funkci porovnání (40, 100).

Funkce vypočítá 40 - 100 (a - b), a protože výsledek je záporný (-60), třídicí funkce seřadí 40 jako hodnotu nižší než 100.

Tento fragment kódu můžete použít k experimentování s číselným a abecedním řazením:

<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>

Třídění pole v náhodném pořadí

Příklad

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


Metoda Fisher Yates

Výše uvedený příklad pole .sort() není přesný, upřednostní některá čísla před ostatními.

Nejpopulárnější správná metoda se nazývá Fisher Yates shuffle a byla zavedena do datové vědy již v roce 1938!

V JavaScriptu lze metodu přeložit na toto:

Příklad

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
}


Najděte nejvyšší (nebo nejnižší) hodnotu pole

Neexistují žádné vestavěné funkce pro nalezení maximální nebo minimální hodnoty v poli.

Po seřazení pole však můžete použít index k získání nejvyšší a nejnižší hodnoty.

Řazení vzestupně:

Příklad

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

Sestupné řazení:

Příklad

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

Řazení celého pole je velmi neefektivní metoda, pokud chcete najít pouze nejvyšší (nebo nejnižší) hodnotu.


Použití Math.max() na poli

Math.max.applyK nalezení nejvyššího čísla v poli můžete použít :

Příklad

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

Math.max.apply(null, [1, 2, 3])je ekvivalentní Math.max(1, 2, 3).


Použití Math.min() na poli

Math.min.applyK nalezení nejnižšího čísla v poli můžete použít :

Příklad

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

Math.min.apply(null, [1, 2, 3])je ekvivalentní Math.min(1, 2, 3).


Moje minimální / maximální metody JavaScriptu

Nejrychlejším řešením je použití „home made“ metody.

Tato funkce prochází polem a porovnává každou hodnotu s nejvyšší nalezenou hodnotou:

Příklad (najít maximum)

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

Tato funkce prochází polem a porovnává každou hodnotu s nejnižší nalezenou hodnotou:

Příklad (Najít min)

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


Třídění objektových polí

Pole JavaScriptu často obsahují objekty:

Příklad

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

I když objekty mají vlastnosti různých datových typů, sort()metodu lze použít k seřazení pole.

Řešením je napsat porovnávací funkci pro porovnání hodnot vlastností:

Příklad

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

Porovnání vlastností řetězců je trochu složitější:

Příklad

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;
});

Kompletní reference pole

Úplnou referenci Array naleznete na naší stránce:

Kompletní reference JavaScript Array .

Odkaz obsahuje popisy a příklady všech vlastností a metod Array.

Otestujte se pomocí cvičení

Cvičení:

Použijte správnou metodu Array k seřazení fruitspole podle abecedy.

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