Javascript Array sort ()

Metode JavaScript Array sort () mengurutkan item dari sebuah array.

The sort()Metode macam elemen array yang diberikan dalam menaik tertentu atau urutan menurun.

Sintaks dari sort()metode ini adalah:

 arr.sort(compareFunction)

Di sini, arr adalah sebuah array.

sort () Parameter

The sort()Metode mengambil di:

  • bandingkanFungsi (opsional) - Ini digunakan untuk menentukan urutan sortir kustom.

Kembalikan nilai dari sort ()

  • Mengembalikan larik setelah mengurutkan elemen larik pada tempatnya (artinya itu mengubah larik asli dan tidak ada salinan yang dibuat).

Contoh 1: Menyortir Elemen Array

Jika bandingkanFungsi tidak diteruskan,

  • Semua undefinedelemen non- array pertama-tama diubah menjadi string.
  • String ini kemudian dibandingkan menggunakan nilai poin kode UTF-16 mereka.
  • Pengurutan dilakukan dalam urutan menaik.
  • Semua undefinedelemen diurutkan hingga akhir larik.
 // sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); // returns the sorted array console.log(names.sort()); // modifies the array in place console.log(names); var priceList = (1000, 50, 2, 7, 14); priceList.sort(); // Number is converted to string and sorted console.log(priceList)

Keluaran

 ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') (1000, 14, 2, 50 , 7)

Di sini, kita dapat melihat bahwa array nama diurutkan dalam urutan string menaik. Misalnya, Adam muncul sebelum Danil karena "A" datang sebelum "D".

Karena semua elemen yang tidak ditentukan diubah menjadi string sebelum mengurutkannya, Numbertipe data diurutkan dalam urutan itu.

Di sini, kita dapat melihat bahwa meskipun 1000 lebih besar dari 50 secara numerik, ia muncul di awal daftar yang diurutkan. Itu karena "1" <"5" .

Contoh 2: Menyortir menggunakan Fungsi Kustom

Ketika bandingkanFungsi dilewatkan,

  • Semua undefinedelemen non- array diurutkan sesuai dengan nilai yang dikembalikan dari bandingkanFungsi.
  • Semua elemen yang tidak ditentukan diurutkan sampai akhir larik dan bandingkanFungsi tidak dipanggil untuk itu.

Misalkan kita ingin mengurutkan larik nama di atas sedemikian rupa sehingga nama terpanjang datang terakhir, daripada mengurutkannya menurut abjad. Kita bisa melakukannya dengan cara berikut:

 // custom sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); function len_compare(a, b)( return a.length - b.length; ) // sort according to string length names.sort(len_compare); console.log(names);

Keluaran

 ('Ben', 'Adam', 'Danil', 'Jeffrey', 'Fabiano')

Di sini, pengurutan didasarkan pada logika a.length - b.length. Ini pada dasarnya berarti bahwa item dengan panjang yang lebih pendek akan muncul di awal Array.

Pertama mari kita pahami cara kerja opsional compareFunction.

Any compareFunctionmemiliki sintaks berikut:

 function (a, b)( // sorting logic // return a Number )

The sort()Metode membandingkan semua nilai dari array dengan melewati dua nilai pada waktu ke compareFunction. Kedua parameter a dan b masing-masing mewakili dua nilai tersebut.

The compareFunctionharus kembali Number. Nilai yang dikembalikan ini digunakan untuk mengurutkan elemen dengan cara berikut:

  • Jika nilai yang dikembalikan <0 , a diurutkan sebelum b (a datang sebelum b).
  • Jika nilai yang dikembalikan> 0 , b diurutkan sebelum a (b muncul sebelum a).
  • Jika nilai yang dikembalikan == 0 , a dan b tetap tidak berubah relatif satu sama lain.

Dalam Contoh 2, kami mengurutkan array menggunakan:

 function len_compare(a, b)( return a.length - b.length; )

Sini:

  • Jika a.length - b.length <0 , a muncul sebelum b. Misalnya, "Adam" muncul sebelum "Jeffrey" sebagai 4 - 7 <0 .
  • Jika a.length - b.length> 0 , b muncul sebelum a. Misalnya, "Danil" muncul setelah "Ben" sebagai 5 - 3> 0.
  • Jika a.length - b.length == 0 , posisinya tidak berubah. Misalnya, posisi relatif "Jeffrey" dan "Fabiano" tidak berubah karena 7 - 7 == 0 .

Kita dapat melihat bahwa ini menghasilkan pengurutan string menurut panjangnya dalam urutan menaik.

Contoh 3: Menyortir Nomor Secara Numerik

Karena semua elemen yang tidak ditentukan diubah menjadi string sebelum mengurutkannya, kami tidak dapat mengurutkan angka menggunakan nilai numeriknya secara default.

Mari kita lihat bagaimana kita bisa mengimplementasikan ini menggunakan fungsi custom.

 // numeric sorting // define array var priceList = (1000, 50, 2, 7, 14); // sort() using function expression // ascending order priceList.sort(function (a, b) ( return a - b; )); // Output: Ascending - 2,7,14,50,1000 console.log("Ascending - " + priceList); // sort() using arrow function expression // descending order priceList.sort((a, b) => b - a); // Output: Descending - 1000,50,14,7,2 console.log("Descending - " + priceList);

Keluaran

 Naik - 2,7,14,50,1000 Turun - 1000,50,14,7,2

Dalam contoh ini, kami mengurutkan array menggunakan:

 function (a, b) ( return a - b; )

Sini,

  • Jika a - b <0 , a muncul sebelum b. Misalnya, 2 muncul sebelum 7 sebagai 2 - 7 <0 .
  • Jika a - b> 0 , b muncul sebelum a. Misalnya, 1000 muncul setelah 50 sebagai 1000 - 50> 0.

Kita dapat melihat bahwa ini menghasilkan pengurutan angka menurut nilai numeriknya yang menaik.

Demikian pula, kita dapat menggunakan b - auntuk mengurutkannya dalam urutan menurun. Perhatikan bahwa kita juga dapat menggunakan ekspresi fungsi panah yang ditentukan dalam ES2015.

Kita juga dapat membalikkan (urutan menurun) array yang diurutkan menggunakan reverse()metode array built-in . Untuk mempelajari lebih lanjut, kunjungi JavaScript Array reverse ().

Artikel yang menarik...