JavaScript taulukko järjestäminen

sort() Menetelmä on yksi vahvimmista taulukkomenetelmistä.

Taulukon järjestäminen

sort() Menetelmä järjestää taulukon kirjainjärjestykseen:

Esimerkki

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Järjestä fruits-taulukon elementit

Kokeile itse

kääntää taulukon

reverse() metodi kääntää taulukon elementtien järjestyksen.

Voit käyttää sitä järjestääksesi taulukon laskevassa järjestyksessä:

Esimerkki

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Järjestä fruits-taulukon elementit
fruits.reverse();         // Käänteinen järjestys elementtien järjestykseen

Kokeile itse

lukuja järjestääksesi

Oletetaansort() Funktio järjestäämerkkijonotjärjestyksessä.

Funktio sopii hyvin merkkijonoille ("Apple" sijoittuu "Banana"-merkkijonon edelle).

Kuitenkin, jos numerot järjestetään merkkijonona, "25" on suurempi kuin "100", koska "2" on suurempi kuin "1".

Tämän vuoksisort() Metodi tuottaa virheellisiä tuloksia laskettessaan lukuja.

Me käytämmeVertailufunktiokorjataksesi tämän ongelman:

Esimerkki

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

Kokeile itse

Käytä samaa taktiikkaa järjestääksesi taulukon laskevassa järjestyksessä:

Esimerkki

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

Kokeile itse

Vertailufunktio

Vertailufunktion tarkoitus on määritellä toinen järjestysjärjestys.

Vertailufunktio tulisi palauttaa negatiivisen, nollan tai positiivisen arvon riippuen parametreista:

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

Kun sort() Funktio lähettää kaksi arvoa vertailufunktiolle ja järjestää arvot sen mukaan, mitä arvoa se palauttaa (negatiivinen, nolla tai positiivinen arvo).

Esimerkki:

Kun verrataan 40 ja 100:sort() Metodi kutsuu vertailufunktiota function(40,100).

Funktio laskee 40-100 ja palauttaa -60 (negatiivinen arvo).

Järjestämisfunktio asettaa 40 arvoksi, joka on pienempi kuin 100.

Voit käyttää seuraavaa koodikappaletta testata arvojen ja kirjainjärjestystä:

<button onclick="myFunction1()">Järjestä kirjainollaan</button>
<button onclick="myFunction2()">Järjestä numerollaan</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>

Kokeile itse

Järjestä taulukko satunnaisessa järjestyksessä

Esimerkki

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

Kokeile itse

Etsi suurin (tai pienin) taulukon arvo

JavaScript ei tarjoa sisäänrakennettua funktiota taulukon suurimman tai pienimmän arvon etsimiseen.

Kun olet järjestänyt taulukon, voit käyttää indeksejä saadaksesi suurimman tai pienimmän arvon.

Nouseva järjestäminen:

Esimerkki

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// Nyt points[0] sisältää pienimmän arvon
// points[points.length-1] sisältää suurimman arvon

Kokeile itse

Laskevaiheen järjestäminen:

Esimerkki

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// Nyt points[0] sisältää suurimman arvon
// points[points.length-1] sisältää pienimmän arvon

Kokeile itse

Jos tarvitset vain löytää suurimman tai pienimmän arvon, koko taulukon järjestäminen on erittäin tehottomaa tapaa.

Käytä Math.max() taulukon kanssa

Voit käyttää Math.max.apply Etsi taulukon suurin arvo:

Esimerkki

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

Kokeile itse

Math.max.apply([1, 2, 3]) on Math.max(1, 2, 3).

Käytä Math.min() taulukon kanssa

Voit käyttää Math.min.apply Etsi taulukon pienin arvo:

Esimerkki

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

Kokeile itse

Math.min.apply([1, 2, 3]) on Math.min(1, 2, 3).

Min / Max JavaScript -menetelmäni

Nopein ratkaisu on käyttää "omaa" menetelmää.

Tämä funktio käy läpi taulukon ja vertailee löytämäänsä suurinta arvoa jokaisen arvon kanssa:

Esimerkki (etsi Max)

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

Kokeile itse

Tämä funktio käy läpi taulukon ja vertailee löytämäänsä pienintä arvoa jokaisen arvon kanssa:

Esimerkki (etsi Min)

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

Kokeile itse

Järjestä objekti-taulukko

JavaScript-taulukot sisältävät usein objekteja:

Esimerkki

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

Vaikka objektit voivat olla eri tyyppisiä tietoja omaavista ominaisuuksista:sort() Tämä menetelmä voidaan edelleen käyttää taulukon järjestämiseen.

Ratkaisu on käyttää vertailufunktiota ominaisuuksien vertailuun:

Esimerkki

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

Kokeile itse

Vertaile string-ominaisuuksia voi olla hieman monimutkaisempaa:

Esimerkki

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

Kokeile itse