Metoda sort

Metoda sort razvrsti tabelo v leksikografskem vrstnem redu in vrne že spremenjeno tabelo. Kot neobvezen parameter lahko podamo lastno funkcijo za razvrščanje.

Sintaksa

javascripttabela.sort([funkcija]);

Primer

Razvrstimo tabelo:

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

Rezultat izvajanja kode:

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

Primer

Razvrstimo tabelo s števili:

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

Rezultat izvajanja kode:

javascript[1, 2, 4, 7]

Primer

Dodajmo v tabelo števila in jih razvrstimo:

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

Kot rezultat izvajanja kode vidimo, da števila niso razporejena v naraščajočem vrstnem redu, temveč v leksikografskem vrstnem redu, kar pomeni, da se števila med seboj primerjajo kot nizi. Pri tem se primerja vsak znak, ali je koda prvega znaka večja od kode sosednjega itd. Rezultat:

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

Primer

Zdaj razvrstimo tabelo z uporabo funkcije, v kateri določimo pogoj - če je prvi parameter večji od drugega, ga zamenjamo (za to v return podamo poljubno pozitivno število). V nasprotnem primeru zamenjava ni potrebna in podamo 0 ali poljubno negativno število:

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

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

console.log(arr);

Rezultat izvajanja kode:

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

Primer

Za udobje skrajšajmo kodo v naši funkciji iz prejšnjega primera:

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

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

console.log(arr);

Rezultat izvajanja kode:

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

Primer

Zdaj pa z uporabo funkcije razvrstimo tabelo v padajočem vrstnem redu:

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

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

console.log(arr);

Rezultat izvajanja kode:

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

Primer

Razvrstimo tabelo objektov po ključu 'one' v naraščajočem vrstnem redu:

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

Rezultat izvajanja kode:

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

Primer

Zdaj pa razvrstimo tabelo objektov po ključu 'two':

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

Rezultat izvajanja kode:

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

Primer

Preverimo, ali se je tabela spremenila po uporabi metode sort:

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

console.log(arr);

Rezultat izvajanja kode:

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

Glejte tudi

  • metoda filter,
    ki omogoča filtriranje elementov tabele