Array Penyortiran JavaScript
Mengurutkan Array
Metode sort()
ini mengurutkan array menurut abjad:
Contoh
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
Membalikkan Array
Metode reverse()
membalikkan elemen dalam array.
Anda dapat menggunakannya untuk mengurutkan array dalam urutan menurun:
Contoh
const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();
Sortir Numerik
Secara default, sort()
fungsi mengurutkan nilai sebagai strings .
Ini bekerja dengan baik untuk string ("Apple" datang sebelum "Banana").
Namun, jika angka diurutkan sebagai string, "25" lebih besar dari "100", karena "2" lebih besar dari "1".
Karena itu, sort()
metode ini akan menghasilkan hasil yang salah saat mengurutkan angka.
Anda dapat memperbaikinya dengan menyediakan fungsi compare :
Contoh
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
Gunakan trik yang sama untuk mengurutkan array secara descending:
Contoh
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
Fungsi Bandingkan
Tujuan dari fungsi bandingkan adalah untuk menentukan urutan pengurutan alternatif.
Fungsi bandingkan harus mengembalikan nilai negatif, nol, atau positif, bergantung pada argumen:
function(a, b){return a - b}
Saat sort()
fungsi membandingkan dua nilai, fungsi tersebut mengirimkan nilai ke fungsi perbandingan, dan mengurutkan nilai menurut nilai yang dikembalikan (negatif, nol, positif).
Jika hasilnya negatif a
diurutkan terlebih dahulu
b
.
Jika hasilnya positif b
diurutkan terlebih dahulu a
.
Jika hasilnya 0 tidak ada perubahan yang dilakukan dengan urutan pengurutan dari dua nilai.
Contoh:
Fungsi bandingkan membandingkan semua nilai dalam larik, dua nilai sekaligus (a, b)
.
Saat membandingkan 40 dan 100, sort()
metode ini memanggil fungsi perbandingan(40, 100).
Fungsi menghitung 40 - 100 (a - b)
, dan karena hasilnya negatif (-60), fungsi pengurutan akan mengurutkan 40 sebagai nilai yang lebih rendah dari 100.
Anda dapat menggunakan cuplikan kode ini untuk bereksperimen dengan pengurutan numerik dan abjad:
<button onclick="myFunction1()">Sort Alphabetically</button>
<button
onclick="myFunction2()">Sort Numerically</button>
<p id="demo"></p>
<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function
myFunction1() {
points.sort();
document.getElementById("demo").innerHTML
= points;
}
function myFunction2() {
points.sort(function(a, b){return
a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
Menyortir Array dalam Urutan Acak
Contoh
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});
Metode Fisher Yates
Contoh di atas, array .sort(), tidak akurat, itu akan mendukung beberapa angka di atas yang lain.
Metode benar yang paling populer, disebut Fisher Yates shuffle, dan diperkenalkan dalam ilmu data sejak tahun 1938!
Dalam JavaScript metode ini dapat diterjemahkan ke ini:
Contoh
const points = [40, 100, 1, 5, 25, 10];
for (let i = points.length -1; i > 0;
i--) {
let j = Math.floor(Math.random() * i)
let k = points[i]
points[i] = points[j]
points[j] = k
}
Temukan Nilai Array Tertinggi (atau Terendah)
Tidak ada fungsi bawaan untuk menemukan nilai maks atau min dalam array.
Namun, setelah Anda mengurutkan array, Anda dapat menggunakan indeks untuk mendapatkan nilai tertinggi dan terendah.
Mengurutkan secara menaik:
Contoh
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value
Mengurutkan secara turun:
Contoh
const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value
Menyortir seluruh array adalah metode yang sangat tidak efisien jika Anda hanya ingin menemukan nilai tertinggi (atau terendah).
Menggunakan Math.max() pada Array
Anda dapat menggunakan Math.max.apply
untuk menemukan angka tertinggi dalam array:
Contoh
function myArrayMax(arr) {
return Math.max.apply(null, arr);
}
Math.max.apply(null, [1, 2, 3])
adalah setara dengan Math.max(1, 2, 3)
.
Menggunakan Math.min() pada Array
Anda dapat menggunakan Math.min.apply
untuk menemukan angka terendah dalam array:
Contoh
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
Math.min.apply(null, [1, 2, 3])
adalah setara dengan Math.min(1, 2, 3)
.
Metode JavaScript Min / Maks Saya
Solusi tercepat adalah dengan menggunakan metode "buatan sendiri".
Fungsi ini berulang melalui larik yang membandingkan setiap nilai dengan nilai tertinggi yang ditemukan:
Contoh (Temukan Maks)
function myArrayMax(arr) {
let len = arr.length;
let max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}
Fungsi ini berulang melalui larik yang membandingkan setiap nilai dengan nilai terendah yang ditemukan:
Contoh (Temukan Min)
function myArrayMin(arr) {
let len = arr.length;
let min = Infinity;
while (len--) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}
Menyortir Array Objek
Array JavaScript sering berisi objek:
Contoh
const cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}
];
Bahkan jika objek memiliki properti dari tipe data yang berbeda, sort()
metode ini dapat digunakan untuk mengurutkan array.
Solusinya adalah dengan menulis fungsi perbandingan untuk membandingkan nilai properti:
Contoh
cars.sort(function(a, b){return a.year - b.year});
Membandingkan properti string sedikit lebih rumit:
Contoh
cars.sort(function(a, b){
let x = a.type.toLowerCase();
let y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
Referensi Array Lengkap
Untuk referensi Array lengkap, kunjungi:
Referensi Array JavaScript Lengkap .
Referensi berisi deskripsi dan contoh semua properti dan metode Array.