Pengurutan Array JavaScript

sort() Metode ini adalah salah satu metode array yang paling kuat.

Pengurutan array

sort() Metode untuk mengurutkan array berdasarkan abjad:

Contoh

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Mengurutkan elemen dalam fruits

Coba Sendiri

Balikkan array

reverse() Metode ini membalikkan elemen di dalam array.

Anda dapat menggunakannya untuk mengurutkan array secara descending:

Contoh

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Mengurutkan elemen dalam fruits
fruits.reverse();         // Balikkan urutan elemen

Coba Sendiri

pengurutan angka

Secara defaultsort() Fungsi mengurutkanstringatur urutan nilai.

Fungsi ini sangat cocok untuk string ("Apple" akan berada di depan "Banana").

Meskipun demikian, jika angka diurutkan sebagai string, "25" lebih besar daripada "100", karena "2" lebih besar daripada "1".

Karena itusort() Metode ini dapat menghasilkan hasil pengurutan yang salah saat mengurutkan angka.

Kami melaluiFungsi rasioUntuk memperbaiki masalah ini:

Contoh

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b}); 

Coba Sendiri

Gunakan teknik yang sama untuk mengurutkan array secara descending:

Contoh

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a}); 

Coba Sendiri

Fungsi rasio

Tujuannya adalah untuk menentukan urutan pengurutan lain.

Fungsi pembanding harus mengembalikan nilai negatif, nol, atau positif, yang bergantung pada parameter:

function(a, b){return a-b}

Ketika sort() Fungsi membandingkan dua nilai, akan mengirimkan nilai ke fungsi pembanding, dan mengurutkan nilai berdasarkan nilai yang kembali (negatif, nol, atau positif).

Contoh:

Ketika membandingkan 40 dan 100,sort() Metode ini memanggil fungsi pembanding function(40,100).

Fungsi ini menghitung 40-100, lalu kembalikan -60 (nilai negatif).

Fungsi pengurutan akan menempatkan 40 di urutan yang lebih rendah daripada 100.

Anda dapat menggunakan kode potongan di bawah ini untuk menguji pengurutan angka dan huruf:

<button onclick="myFunction1()">Atur urutan huruf</button>
<button onclick="myFunction2()">Atur urutan angka</button>
<p id="demo"></p>
<script>
var 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>

Coba Sendiri

以随机顺序排序数组

Contoh

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()}); 

Coba Sendiri

查找最高(或最低)的数组值

JavaScript 不提供查找数组中最大或最小数组值的内建函数。

不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。

升序排序:

Contoh

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// 现在 points[0] 包含最低值
// 而 points[points.length-1] 包含最高值

Coba Sendiri

降序排序:

Contoh

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// 现在 points[0] 包含最高值
// 而 points[points.length-1] 包含最低值

Coba Sendiri

如果您仅仅需要找到最高或最低值,对整个数组进行排序是效率极低的方法。

对数组使用 Math.max()

您可以使用 Math.max.apply 来查找数组中的最高值:

Contoh

function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}

Coba Sendiri

Math.max.apply([1, 2, 3]) 等于 Math.max(1, 2, 3)

对数组使用 Math.min()

您可以使用 Math.min.apply 来查找数组中的最低值:

Contoh

function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}

Coba Sendiri

Math.min.apply([1, 2, 3]) 等于 Math.min(1, 2, 3)

我的 Min / Max JavaScript 方法

最快的解决方法是使用“自制”方法。

此函数遍历数组,用找到的最高值与每个值进行比较:

实例(查找 Max)

function myArrayMax(arr) {
    var len = arr.length
    var max = -Infinity;
    while (len--) {
        if (arr[len] > max) {
            max = arr[len];
        }
    }
    return max;
}

Coba Sendiri

此函数遍历数组,用找到的最低值与每个值进行比较:

实例(查找 Min)

function myArrayMin(arr) {
    var len = arr.length
    var min = Infinity;
    while (len--) {
        if (arr[len] < min) {
            min = arr[len];
        }
    }
    return min;
}

Coba Sendiri

Pengurutan array objek

Array JavaScript sering mengandung objek:

Contoh

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];

Meskipun objek memiliki atribut tipe data yang berbeda:sort() Metode ini masih dapat digunakan untuk mengurutkan array.

Solusi adalah melalui fungsi pembanding untuk membandingkan nilai atribut:

Contoh

cars.sort(function(a, b){return a.year - b.year});

Coba Sendiri

Pembanding atribut string akan lebih kompleks:

Contoh

cars.sort(function(a, b){
	  var x = a.type.toLowerCase();
	  var y = b.type.toLowerCase();
	  if (x < y) {return -1;}
	  if (x > y) {return 1;}
	  return 0;
});

Coba Sendiri