A sort metódus

A sort metódus lexikografikus sorrendbe rendezi a tömböt és visszaadja a már módosított tömböt. Opcionális paraméterként saját rendezőfüggvény is megadható.

Szintaxis

javascripttömb.sort([függvény]);

Példa

Rendezzünk egy tömböt:

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

A kód végrehajtásának eredménye:

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

Példa

Rendezzünk egy számokat tartalmazó tömböt:

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

A kód végrehajtásának eredménye:

javascript[1, 2, 4, 7]

Példa

Adjunk hozzá számokat a tömbhöz és rendezzük azt:

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

A kód végrehajtásának eredményeképpen láthatjuk, hogy a számok nem növekvő sorrendben, hanem lexikografikus sorrendben helyezkednek el, azaz a számok egymással karakterláncként hasonlítódnak össze. Ebben az esetben az összehasonlítás karakterenként történik, hogy nagyobb-e az első karakter kódja, mint a szomszédosé, stb. Az eredmény:

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

Példa

Most rendezzünk egy tömböt egy olyan függvény segítségével, amelyben feltételt írunk elő - ha az első paraméter nagyobb, mint a második, akkor cseréljük fel őket (ehhez a return-ban bármilyen pozitív számot adjunk meg). Ellenkező esetben a csere nem szükséges, és 0-t vagy bármilyen negatív számot adjunk meg:

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

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

console.log(arr);

A kód végrehajtásának eredménye:

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

Példa

Az előző példa függvényében rövidítsük le a kódot:

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

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

console.log(arr);

A kód végrehajtásának eredménye:

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

Példa

Most pedig egy függvény segítségével rendezzük a tömböt csökkenő sorrendbe:

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

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

console.log(arr);

A kód végrehajtásának eredménye:

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

Példa

Rendezzünk objektumok egy tömbjét a 'one' kulcs szerint növekvő sorrendbe:

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

A kód végrehajtásának eredménye:

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

Példa

Most pedig rendezzük az objektumok tömbjét a 'two' kulcs szerint:

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

A kód végrehajtásának eredménye:

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

Példa

Ellenőrizzük, hogy megváltozott-e a tömb a sort metódus alkalmazása után:

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

console.log(arr);

A kód végrehajtásának eredménye:

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

Lásd még

  • a filter metódus,
    amely lehetővé teszi a tömb elemeinek szűrését