Metodi sort

Metodi sort suorittaa taulukon lajittelun leksikografisessa järjestyksessä ja palauttaa jo muutetun taulukon. Valinnaisena parametrina voidaan antaa oma funktio lajittelua varten.

Syntaksi

javascripttaulukko.sort([funktio]);

Esimerkki

Lajitellaan taulukko:

javascriptlet arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());

Koodin suorituksen tulos:

javascript['a', 'b', 'c', 'd']

Esimerkki

Lajitellaan taulukko numeroilla:

javascriptlet arr = [4, 1, 7, 2];
console.log(arr.sort());

Koodin suorituksen tulos:

javascript[1, 2, 4, 7]

Esimerkki

Lisätään taulukkoon numeroita ja lajitellaan se:

javascriptlet arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());

Koodin suorituksen tuloksena näemme, että numerot eivät sijaitse nousevassa järjestyksessä, vaan leksikografisessa järjestyksessä, eli numerot verrataan keskenään merkkijonoina. Tässä vertailu tapahtuu jokaisen merkin perusteella, onko ensimmäisen merkin koodi suurempi kuin naapurimerkin koodi jne. Tulos:

javascript[1, 111, 123, 2, 4, 7]

Esimerkki

Lajitellaan nyt taulukko funktion avulla, jossa määritämme ehdon - jos ensimmäinen parametri on suurempi kuin toinen, niin se siirretään (tätä varten return-lauseessa mikä tahansa positiivinen luku). Päinvastaisessa tapauksessa siirtoa ei tarvita ja määritämme 0 tai minkä tahansa negatiivisen luvun:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  if (a > b) {
    return 1;
  } else {
    return -1;
  }
});

console.log(arr);

Koodin suorituksen tulos:

javascript[1, 2, 4, 7, 111, 123]

Esimerkki

Lyhennetään mukavuuden vuoksi koodia edellisen esimerkin funktiossamme:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

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

console.log(arr);

Koodin suorituksen tulos:

javascript[1, 2, 4, 7, 111, 123]

Esimerkki

Lajitellaan nyt funktion avulla taulukko laskevaan järjestykseen:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

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

console.log(arr);

Koodin suorituksen tulos:

javascript[123, 111, 7, 4, 2, 1]

Esimerkki

Lajitellaan olioita sisältävä taulukko avaimen 'one' mukaan nousevaan järjestykseen:

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.one - b.one;
});

console.log(arr);

Koodin suorituksen tulos:

javascript[
  {one: 1, two: 2},
  {one: 3, two: 3},
  {one: 7, two: 1}
]

Esimerkki

Lajitellaan nyt olioita sisältävä taulukko avaimen 'two' mukaan:

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.two - b.two;
});

console.log(arr);

Koodin suorituksen tulos:

javascript[
  {one: 7, two: 1},
  {one: 1, two: 2},
  {one: 3, two: 3}
]

Esimerkki

Tarkistetaan, onko taulukko muuttunut metodin sort käytön jälkeen:

javascriptlet arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();

console.log(arr);

Koodin suorituksen tulos:

javascript['a', 'b', 'c', 'd']

Katso myös

  • metodi filter,
    jolla voi suodattaa taulukon elementtejä