通正常定,對于兩個元素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是同一對象