JavaScript arraysortering
- Forrige side JS array søgning
- Næste side JS array iteration
sort()
Metoden er en af de kraftigste arraymetoder.
Array sortering
sort()
Metoder sorterer arrayer i alfabetisk rækkefølge:
Eksempel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sorter elementerne i fruits
Omdrej array
reverse()
metode til at omdreje elementerne i arrayet.
Du kan bruge det til at sortere arrayet i faldende rækkefølge:
Eksempel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sorter elementerne i fruits fruits.reverse(); // Omdrej elementernes rækkefølge
Numerisk sortering
Som standardsort()
Funktionen sorterer efterstrengrækkefølge til at sortere værdierne.
Funktionen er velegnet til strenge ("Apple" vil komme før "Banana").
Men hvis tal sorteres som strenge, er "25" større end "100", fordi "2" er større end "1".
Af den grundsort()
Metoden kan generere forkerte resultater, når den sorterer numeriske værdier.
Vi bruger enForholdsfunktionFor at rette dette problem:
Eksempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Brug samme teknik til at sortere arrayet i faldende rækkefølge:
Eksempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Forholdsfunktion
Formålet med sammenligningsfunktionen er at definere en anden sorteringsrækkefølge.
Sammenligningsfunktionen skal returnere en negativ, zero eller positiv værdi afhængigt af parametrene:
function(a, b){return a-b}
Når sort()
Når funktionen sammenligner to værdier, sender den værdierne til sammenligningsfunktionen og sorterer dem baseret på den returnerede værdi (negativ, zero eller positiv værdi).
Eksempel:
Når man sammenligner 40 og 100,sort()
Metoden kalder sammenligningsfunktionen function(40,100).
Funktionen beregner 40-100, og returnerer derefter -60 (en negativ værdi).
Sorteringsfunktionen vil sortere 40 til en lavere værdi end 100.
Du kan bruge følgende kodeudsnit til at teste numerisk og alfabetisk sortering:
<button onclick="myFunction1()">Sorter efter alfabetisk rækkefølge</button> <button onclick="myFunction2()">Sorter efter numerisk rækkefølge</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>
Sorter arrayet i tilfældig rækkefølge
Eksempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Find den højeste (eller laveste) værdi i et array
JavaScript tilbyder ikke indbyggede funktioner til at finde den største eller mindste værdi i et array.
Men efter at have sorteret arrayet, kan du bruge indekser til at få fat i den højeste eller laveste værdi.
Sorter opadgående:
Eksempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Nu indeholder points[0] den laveste værdi // Og points[points.length-1] indeholder den højeste værdi
Sorter nedadgående:
Eksempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Nu indeholder points[0] den højeste værdi // Og points[points.length-1] indeholder den laveste værdi
Hvis du kun har brug for at finde den højeste eller laveste værdi, er det meget ineffektivt at sortere hele arrayet.
anvend Math.max() på arrayet
Du kan bruge Math.max.apply
for at finde den højeste værdi i arrayet:
Eksempel
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
er lig med Math.max(1, 2, 3)
.
til at anvende Math.min() på arrayet
Du kan bruge Math.min.apply
for at finde den laveste værdi i arrayet:
Eksempel
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
er lig med Math.min(1, 2, 3)
.
Min / Max JavaScript-metoder
Den hurtigste løsning er at bruge en "egen" metode.
Denne funktion gennemgår arrayet og sammenligner den fundne højeste værdi med hver værdi:
eksempel (søg Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Denne funktion gennemgår arrayet og sammenligner den fundne laveste værdi med hver værdi:
eksempel (søg Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Sorter objekt arrayer
JavaScript arrayer indeholder ofte objekter:
Eksempel
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Selvom objekter har forskellige data typer egenskaber,sort()
Metoden kan stadig bruges til at sortere arrayer.
Løsningen er at bruge en sammenligningsfunktion til at sammenligne egenskabsværdier:
Eksempel
cars.sort(function(a, b){return a.year - b.year});
Det er lidt mere komplekst at sammenligne streng egenskaber:
Eksempel
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Forrige side JS array søgning
- Næste side JS array iteration