Namun, jika angka diurutkan sebagai string, "25" lebih besar dari "100", karena "2" lebih besar dari "1"
Karena itu, metode sort()_ akan menghasilkan hasil yang salah saat mengurutkan angka
Anda dapat memperbaikinya dengan menyediakan fungsi bandingkan
Contoh
poin const = [40, 100, 1, 5, 25, 10];
poin. urutkan(fungsi(a, b){kembali a - b});
Gunakan trik yang sama untuk mengurutkan array yang menurun
Contoh
poin const = [40, 100, 1, 5, 25, 10];
poin. urutkan(fungsi(a, b){kembali 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 argumennya
fungsi(a, b){kembali a - b}
Saat fungsi sort() membandingkan dua nilai, fungsi tersebut mengirimkan nilai ke fungsi bandingkan, dan mengurutkan nilai sesuai dengan nilai yang dikembalikan (negatif, nol, positif)
Jika hasilnya negatif, a diurutkan sebelum b
Jika hasilnya positif, b diurutkan sebelum a
Jika hasilnya 0, tidak ada perubahan yang dilakukan dengan urutan kedua nilai tersebut
Contoh
Fungsi bandingkan membandingkan semua nilai dalam array, dua nilai sekaligus sort()0
Saat membandingkan 40 dan 100, metode sort() memanggil fungsi bandingkan(40, 100)
Fungsi menghitung 40 - 100 sort()_2, 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
Urutkan Secara Abjad
Urutkan Secara Numerik
Menyortir Array dalam Urutan Acak
Contoh
poin const = [40, 100, 1, 5, 25, 10];
poin. urutkan(fungsi(){kembali 0. 5 - Matematika. acak()});
Cobalah sendiri "
Metode Fisher Yates
Contoh di atas, array. sort(), tidak akurat. Ini akan mendukung beberapa nomor daripada yang lain
Metode benar yang paling populer, disebut pengocokan Fisher Yates, dan diperkenalkan dalam ilmu data sejak tahun 1938
Dalam JavaScript metode dapat diterjemahkan ke ini
Contoh
poin const = [40, 100, 1, 5, 25, 10];
untuk (misalkan i = poin. panjang -1;
biarkan j = Matematika. lantai (Matematika. acak() * (i+1));
misalkan k = poin[i];
poin[i] = poin[j];
poin[j] = k;
}
Cobalah sendiri "
Temukan Nilai Array Tertinggi (atau Terendah).
Tidak ada fungsi bawaan untuk menemukan nilai maks atau min dalam sebuah array
Namun, setelah Anda mengurutkan array, Anda dapat menggunakan indeks untuk mendapatkan nilai tertinggi dan terendah
Mengurutkan naik
Contoh
poin const = [40, 100, 1, 5, 25, 10];
poin. urutkan(fungsi(a, b){kembali a - b});
// sekarang poin[0] berisi nilai terendah
// dan poin[poin. panjang-1] berisi nilai tertinggi
Menyortir menurun
Contoh
poin const = [40, 100, 1, 5, 25, 10];
poin. urutkan(fungsi(a, b){kembali b - a});
// sekarang poin[0] berisi nilai tertinggi
// dan poin[poin. panjang-1] berisi nilai terendah
Menyortir seluruh array adalah metode yang sangat tidak efisien jika Anda hanya ingin mencari nilai tertinggi (atau terendah).
Menggunakan Matematika. max() pada Array
Anda dapat menggunakan sort()_3 untuk menemukan angka tertinggi dalam sebuah array
sort()4 setara dengan sort()5
Menggunakan Matematika. min() pada Array
Anda dapat menggunakan sort()_6 untuk menemukan angka terendah dalam sebuah array
sort()7 setara dengan sort()8
Metode JavaScript Min / Maks saya
Solusi tercepat adalah dengan menggunakan metode "buatan sendiri".
Fungsi ini mengulang melalui array yang membandingkan setiap nilai dengan nilai tertinggi yang ditemukan
Contoh (Temukan Maks)
fungsi myArrayMax(arr) {
biarkan len = arr. panjangnya;
biarkan maks = -Infinity;
while (len--) {
if (arr[len] > maks) {
maks = arr[len];
}
}
pengembalian maks;
}
Cobalah sendiri "
Fungsi ini mengulang melalui array yang membandingkan setiap nilai dengan nilai terendah yang ditemukan
Contoh (Cari Min)
fungsi myArrayMin(arr) {
biarkan len = arr. panjangnya;
biarkan min = Tak terhingga;
while (len--) {
if (arr[len] < mnt) {
min = arr[len];
}
}
kembali min;
}
Cobalah sendiri "
Menyortir Array Objek
Larik JavaScript sering berisi objek
Contoh
mobil const = [
{Tipe. "Volvo", tahun. 2016},
{Tipe. "Saab", tahun. 2001},
{Tipe. "BMW", tahun. 2010}
];
Bahkan jika objek memiliki properti dari tipe data yang berbeda, metode sort() dapat digunakan untuk mengurutkan array