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.
0 Response to "Konsep Sort Array di Bahasa Javascript"
Post a Comment