天天看點

javascript高階函數sort的使用

通正常定,對于兩個元素x和y,如果認為x < y,則傳回-1,如果認為x == y,則傳回0,如果認為x > y,則傳回1,這樣,排序算法就不用關心具體的比較過程,而是根據比較結果直接排序。

sort()方法是一個高階函數,它還可以接收一個比較函數來實作自定義的排序。

要按數字大小排序,我們可以這麼寫:

'use strict';
var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return -1;
    }
    if (x > y) {
        return 1;
    }
    return 0;
});
console.log(arr); // [1, 2, 10, 20]      

更加簡便的寫法:

console.log(arr.sort((x, y) => x - y)); // [1, 2, 10, 20]      

如果要倒序排序,我們可以把大的數放前面:

var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
    if (x < y) {
        return 1;
    }
    if (x > y) {
        return -1;
    }
    return 0;
}); // [20, 10, 2, 1]      
console.log(arr.sort((x, y) => y - x)); //  [20, 10, 2, 1]      
var a1 = ['B', 'A', 'C'];
var a2 = a1.sort();
a1; // ['A', 'B', 'C']
a2; // ['A', 'B', 'C']
a1 === a2; // true, a1和a2是同一對象      

繼續閱讀