JavaScript array sortering
- Föregående sida JS-array sökning
- Nästa sida JS-arrayiteration
sortera()
Metoden är en av de mest kraftfulla arraymetoderna.
Array sorter
sortera()
Metoden sorterar arrayen i bokstavsordning:
exempel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortera elementen i fruits
Vänd array
reverse()
Metoden vänder på elementen i en array.
Du kan använda det för att sortera en array i fallande ordning:
exempel
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sortera elementen i fruits fruits.reverse(); // Återvänd elementordningen
Numerisk sortering
Som standardsortera()
Funktionen sorterarSträngordning för att sortera värden.
Funktionen är mycket lämplig för strängar ("Apple" kommer att ligga före "Banana").
Men om siffror sorteras som strängar, är "25" större än "100", eftersom "2" är större än "1".
Därförsortera()
Metoden genererar felaktiga resultat när den sorterar numeriska värden.
Vi använder enJämförelsefunktionFör att rätta till detta problem:
exempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Använd samma teknik för att sortera en array i fallande ordning:
exempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Jämförelsefunktion
Syftet med jämförelsefunktionen är att definiera en annan sorteringsordning.
Jämförelsefunktionen bör returnera ett negativt, noll eller positivt värde beroende på parametrarna:
function(a, b){return a-b}
När sortera()
När en funktion jämför två värden, skickas dessa värden till jämförelsefunktionen och värdena sorteras baserat på det returnerade värdet (negativt, noll eller positivt).
Exempel:
När jämförelse sker mellan 40 och 100:sortera()
Metoden anropar jämförelsefunktionen function(40,100).
Funktionen räknar ut 40-100 och returnerar -60 (negativt värde).
Sorteringsfunktionen kommer att sortera 40 till ett lägre värde än 100.
Du kan använda följande kodsnutt för att testa numerisk och bokstavlig sortering:
<button onclick="myFunction1()">Sortera med bokstavlig ordning</button> <button onclick="myFunction2()">Sortera med numerisk ordning</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>
Sortera arrayen i slumpmässig ordning
exempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Sök högsta (eller lägsta) värdet i arrayen
JavaScript erbjuder inga inbyggda funktioner för att hitta högsta eller lägsta värdet i en array.
Men efter att ha sorterat arrayen kan du använda index för att få högsta eller lägsta värdet.
Sortera i stigande ordning:
exempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Nu innehåller points[0] lägsta värdet // Och points[points.length-1] innehåller högsta värdet
Sortera i fallande ordning:
exempel
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Nu innehåller points[0] högsta värdet // Och points[points.length-1] innehåller lägsta värdet
Om du bara behöver hitta högsta eller lägsta värdet, är det mycket ineffektivt att sortera hela arrayen.
använd Math.max() på arrayen
Du kan använda Math.max.apply
för att hitta det högsta värdet i arrayen:
exempel
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
likaså Math.max(1, 2, 3)
.
använd Math.min() på arrayen
Du kan använda Math.min.apply
för att hitta den lägsta värdet i arrayen:
exempel
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
likaså Math.min(1, 2, 3)
.
Mina Min / Max JavaScript-metoder
Den snabbaste lösningen är att använda en "egen" metod.
Denna funktion genomgår arrayen och jämför den hittade högsta värdet med varje värde:
Exempel (sök Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; medan (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Denna funktion genomgår arrayen och jämför den hittade lägsta värdet med varje värde:
Exempel (sök Min)
function myArrayMin(arr) { var len = arr.length var min = Oändlighet; medan (len--) { om (arr[len] < min) { min = arr[len]; } } return min; }
Sortera objektsarray
JavaScript-array innehåller ofta objekt:
exempel
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Även om objekt har olika datatyper för egenskaper:sortera()
Metoden kan fortfarande användas för att sortera en array.
Lösningen är att använda en jämförelsefunktion för att jämföra attributvärden:
exempel
cars.sort(function(a, b){return a.year - b.year});
Det är något mer komplicerat att jämföra strängattribut:
exempel
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); om (x < y) {returnera -1;} om (x > y) {returnera 1;} returnera 0; });
- Föregående sida JS-array sökning
- Nästa sida JS-arrayiteration