Metode sort

Metode sort veic masīva kārtošanu leksikogrāfiskā secībā un atgriež jau izmainīto masīvu. Kā neobligātu parametru var norādīt savu kārtošanas funkciju.

Sintakse

javascriptmasīvs.sort([funkcija]);

Piemērs

Kārtosim masīvu:

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

Koda izpildes rezultāts:

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

Piemērs

Kārtosim masīvu ar skaitļiem:

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

Koda izpildes rezultāts:

javascript[1, 2, 4, 7]

Piemērs

Pievienosim masīvam skaitļus un sakārtosim to:

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

Koda izpildes rezultātā mēs redzēsim, ka skaitļi atrodas ne augošā secībā, bet leksikogrāfiskā secībā, t.i., skaitļi tiek salīdzināti viens ar otru kā virknes. Tajā pašā laikā salīdzināšana notiek pa katru simbolu, vai pirmā simbola kods ir lielāks par blakus esošā simbola kodu utt. Rezultāts:

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

Piemērs

Tagad sakārtosim masīvu ar funkcijas palīdzību, kurā mēs norādīsim nosacījumu - ja pirmais parametrs ir lielāks par otro, tad to pārkārtojam (šim nolūkam return jebkuru pozitīvu skaitli). Pretējā gadījumā pārkārtošana nav nepieciešama un mēs norādām 0 vai jebkuru negatīvu skaitli:

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

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

console.log(arr);

Koda izpildes rezultāts:

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

Piemērs

Ērtības labad saīsināsim kodu mūsu funkcijā no iepriekšējā piemēra:

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

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

console.log(arr);

Koda izpildes rezultāts:

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

Piemērs

Un tagad ar funkcijas palīdzību sakārtosim masīvu dilstošā secībā:

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

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

console.log(arr);

Koda izpildes rezultāts:

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

Piemērs

Kārtosim objektu masīvu pēc atslēgas 'one' augošā secībā:

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

Koda izpildes rezultāts:

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

Piemērs

Un tagad kārtosim objektu masīvu pēc atslēgas '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);

Koda izpildes rezultāts:

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

Piemērs

Pārbaudīsim, vai masīvs ir mainījies pēc metodes sort lietošanas:

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

console.log(arr);

Koda izpildes rezultāts:

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

Skatiet arī

  • metode filter,
    kas ļauj filtrēt masīva elementus