JavaScript Array Sorteren
- Vorige Pagina JS Array Zoeken
- Volgende Pagina JS Array Iteratie
sort()
Deze methode is een van de krachtigste arraymethoden.
Array sorteren
sort()
Methoden sorteren de array in alfabetische volgorde:
Voorbeeld
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sorteer elementen in fruits
Keer array om
reverse()
De methode keert de elementen in de array om.
U kunt het gebruiken om een array in omgekeerde volgorde te sorteren:
Voorbeeld
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sorteer elementen in fruits fruits.reverse(); // Keer elementenvolgorde om
Numerieke sortering
Standaardsort()
De functie sorteert opStringsvolgorde de waarden sorteert.
Deze functie is geschikt voor strings ("Apple" komt voor "Banana").
Echter, als cijfers als strings worden gesorteerd, is "25" groter dan "100", omdat "2" groter is dan "1".
Omdatsort()
De methode kan onjuiste resultaten produceren bij numerieke sortering.
We gebruiken eenVergelijksfunctieOm dit probleem op te lossen:
Voorbeeld
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Gebruik dezelfde techniek om een array in omgekeerde volgorde te sorteren:
Voorbeeld
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Vergelijksfunctie
Het doel van de vergelijksfunctie is een andere sorteerorde te definiëren.
De vergelijksfunctie moet een negatieve, nul of positieve waarde teruggeven, afhankelijk van de parameters:
function(a, b){return a-b}
Wanneer sort()
Wanneer de functie twee waarden vergelijkt, stuurt deze de waarden naar de vergelijksfunctie en sorteert deze op basis van de teruggegeven waarde (negatief, nul of positief).
Voorbeeld:
Bij het vergelijken van 40 en 100,sort()
De methode roept de vergelijksfunctie function(40,100) aan.
De functie berekent 40-100 en keert dan -60 (negatief) terug.
De sorteerfunctie zal 40 sorteren als een lagere waarde dan 100.
U kunt de volgende codefragment gebruiken om numerieke en alfabetische sortering te testen:
<button onclick="myFunction1()">Op alfabetische volgorde sorteren</button> <button onclick="myFunction2()">Op numerieke volgorde sorteren</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>
Sorteer het array in willekeurige volgorde
Voorbeeld
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Zoek de hoogste (of laagste) waarde van een array
JavaScript biedt geen ingebouwde functie om de hoogste of laagste waarde van een array te vinden.
Na het sorteren van het array kunt u de index gebruiken om de hoogste of laagste waarde te verkrijgen.
Oplopend sorteren:
Voorbeeld
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // Nu bevat points[0] de laagste waarde // En points[points.length-1] bevat de hoogste waarde
Afslopend sorteren:
Voorbeeld
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // Nu bevat points[0] de hoogste waarde // En points[points.length-1] bevat de laagste waarde
Als u alleen de hoogste of laagste waarde wilt vinden, is het sorteren van het hele array een zeer inefficiënte methode.
het gebruik van Math.max() op het array toepassen
U kunt Math.max.apply
om de hoogste waarde in het array te vinden:
Voorbeeld
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
is gelijk aan Math.max(1, 2, 3)
.
het gebruik van Math.min() op het array toepassen
U kunt Math.min.apply
om de laagste waarde in het array te vinden:
Voorbeeld
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
is gelijk aan Math.min(1, 2, 3)
.
Mijn Min / Max JavaScript-methode
De snelste oplossing is het gebruik van een 'zelfgemaakt' method.
Deze functie loopt door het array heen en vergelijkt elke waarde met de hoogste waarde die ze vinden:
Voorbeeld (zoek Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
Deze functie loopt door het array heen en vergelijkt elke waarde met de laagste waarde die ze vinden:
Voorbeeld (zoek Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Sorteer objectarrays
JavaScript arrays bevatten vaak objecten:
Voorbeeld
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Zelfs als objecten verschillende datatypen hebben voor hun eigenschappen:sort()
Deze methode kan nog steeds gebruikt worden om arrays te sorteren.
De oplossing is om een vergelijkingsfunctie te gebruiken om eigenschapswaarden te vergelijken:
Voorbeeld
cars.sort(function(a, b){return a.year - b.year});
Het vergelijken van string-eigenschappen is iets complexer:
Voorbeeld
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; });
- Vorige Pagina JS Array Zoeken
- Volgende Pagina JS Array Iteratie