Konsep Sort Array di Bahasa Javascript

Konsep Sort Array di Bahasa Javascrip


Konsep

Seperti banyak bahasa populer lainnya, JavaScript dengan mudah dilengkapi dengan metode bawaan untuk menyortir array. Meskipun hasil akhirnya sama, berbagai mesin JavaScript menerapkan metode ini menggunakan algoritme pengurutan yang berbeda:

V8: Quicksort atau Insertion Sort (untuk array yang lebih kecil)

Firefox: Merge Sort

Safari: Quicksort, Merge Sort, atau Selection Sort (tergantung pada tipe array)

Implementasinya tidak terlalu penting untuk kode panggilan, tetapi menarik untuk melihat algoritme pengurutan ini digunakan dalam praktik setelah mempelajarinya begitu lama di kelas intro CS.

Fungsi sortir ini tersedia sebagai metode prototipe pada kelas Array:

Array.sort([compareFunc])

Dalam mode JavaScript yang sebenarnya, panggilan balik diteruskan ke fungsi ini yang digunakan untuk memberi tahu algoritme pengurutan bagaimana dua elemen dibandingkan satu sama lain. compareFunc harus memiliki dua parameter, a dan b, dan berfungsi seperti ini:

Jika compareFunc mengembalikan 0 maka elemen diperlakukan sama

Jika compareFunc mengembalikan 1 maka b diurutkan sebelum a

Jika compareFunc mengembalikan -1 maka a diurutkan sebelum b

 

Fungsi tidak perlu mengembalikan 1 atau -1, asalkan angka yang dikembalikan adalah 0,

di atas 0, atau di bawah 0. Jadi fungsi pembanding seperti (a, b) => a - b; benar-benar valid.

 

Jika compareFunc tidak diberikan maka elemen dikonversi menjadi string dan kemudian diurutkan berdasarkan abjad. Ini membuat penyortiran string menjadi sepele. Namun, meskipun mengurutkan angka sepertinya harus lurus ke depan, sebenarnya bisa sedikit membingungkan di sini:

 

> let nums = [3, 2, 6, 50, 10];

> nums.sort()

[ 10, 2, 3, 50, 6 ]

 

Seperti yang Anda lihat, jumlahnya tidak dalam urutan yang Anda harapkan. Ini karena, seperti yang disebutkan sebelumnya, bahwa metode pengurutan default adalah mengubah elemen menjadi string sebelum melakukan perbandingan. Dan sebagai string, "50" muncul sebelum "6", itulah sebabnya 50 tidak terakhir dalam array. Untuk mengurutkan array ini dengan benar, coba yang berikut ini:

 

> let nums = [3, 2, 6, 50, 10];

> nums.sort((a, b) => a - b);

[ 2, 3, 6, 10, 50 ]

 

Catatan: Penting untuk diingat bahwa metode ini mengurutkan di tempat, yang berarti  bahwa array asli sebenarnya diurutkan dan tidak ada salinan yang dibuat. Jadi, sementara metode .sort() mengembalikan array yang diurutkan, Anda sebenarnya tidak perlu menetapkannya ke apa pun karena array yang dipanggil sudah diurutkan.

 

Jika Anda ingin membalik urutan pengurutan, cukup alihkan perbandingan a dan b. Jadi, jika kami ingin angka-angkanya dalam urutan menurun, Anda harus melakukan hal berikut:

> let nums = [3, 2, 6, 50, 10];

> nums.sort((a, b) => b - a);

[ 50, 10, 6, 3, 2 ]

Sorting Array of Object (Objek di dalam Array)

Menggunakan fungsi pembanding seperti ini membuatnya sangat mudah untuk mengurutkan objek khusus dalam JavaScript. Sebagai contoh, katakanlah kita memiliki daftar data pengguna berikut:

let users = [

    {name: 'Scotty', age: '18'},

    {name: 'Tommy', age: '21'},

    {name: 'Sally', age: '71'},

    {name: 'Billy', age: '18'},

    {name: 'Timmy', age: '21'}

];

 

Ini bukan sesuatu yang hanya bisa ditafsirkan dan diurutkan oleh algoritma pengurutan sendiri. Urutannya juga sangat tergantung pada aplikasinya. Bagaimana jika kita ingin mengurutkan berdasarkan usia dan kemudian nama? Untuk melakukannya, kami dapat menyediakan pembanding yang menggabungkan keduanya:

 

users.sort((a, b) => {

    let keyA = a.age + a.name;

    let keyB = b.age + b.name;

    if (keyA < keyB) return -1;

    if (keyA > keyB) return 1;

    return 0;

});

 

Ini akan menghasilkan array yang diurutkan berikut:

[ { name: 'Billy', age: '18' },

  { name: 'Scotty', age: '18' },

  { name: 'Timmy', age: '21' },

  { name: 'Tommy', age: '21' },

  { name: 'Sally', age: '71' } ]

 

Perhatikan bahwa semua pengguna sekarang diurutkan berdasarkan usia. Dan sebagaimana dimaksud, pengguna dengan usia yang sama kemudian diurutkan  berdasarkan nama, seperti Billy dan Scotty.

 

Kesimpulan

Dalam artikel singkat ini kita melihat cara menggunakan metode .sort() bawaan untuk mengurutkan array dalam JavaScript dengan mudah. Ini berlaku untuk semua jenis data, termasuk string, angka, atau bahkan objek. Urutan pengurutan ditentukan oleh metode callback compareFun, yang memungkinkan Anda menentukan urutan pengurutan atau properti objek apa yang menentukan urutan pengurutan.

 

 




Subscribe to receive free email updates:

0 Response to "Konsep Sort Array di Bahasa Javascript"

Post a Comment