JS (JavaScript) 中陣列 Array.sort 排序
阿新 • • 發佈:2022-05-18
JavaScript中陣列的sort()方法主要用於對陣列的元素進行排序
- 原理
arr.sort((m, u) => { ... return (number) }
sort 的引數接收一個函式 或者 可以不傳參
不傳引數的情況,也就是預設排序順序是根據字串Unicode碼點
sort內的函式 返回值小於0, m排在u前面; 返回值等於 0, m,u相等順序不變; 返回值大於 0, m排在u後面 - 數值排序
//升序 var arr = [1, 2, 3, 11, 12, 4, 1, 3, 10]; // var newArr = arr.sort((m,u)=>{return u - m}); // 或者下邊這種寫法都可以 var newArr = arr.sort(num); console.log(newArr); // [1, 1, 2, 3, 3, 4, 10, 11, 12] function num (m,u){ return m - u; } //降序 var arr = [1, 2, 3, 11, 12, 4, 1, 3, 10]; // var newArr = arr.sort((m,u)=>{return u - m}); // 或者下邊這種寫法都可以 var newArr = arr.sort(num); console.log(newArr); // [1, 1, 2, 3, 3, 4, 10, 11, 12] function num (m,u){ return u- m; }
- 字串排序
// 對字串陣列執行不區分大小寫的字母表排序 // 字串的數字 或者字母 是同位置的字元的碼點相比較 當前位置碼點相等 繼續下一位置比較 直到得出不同或結束 // 所以 '120' 和 '1190' '120' 比 '1190' 排後面 var arr = ['a', 'Ar', 'c', 'd', 'E', 'Fs', '120', '1190', 'ee']; var newArr = arr.sort(num); console.log(newArr); // 輸出 ['1190', '120', 'a', 'Ar', 'c', 'd', 'E', 'ee', 'Fs'] function num (m,u){ var a = m.toLowerCase(); var b = u.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0; }
- 隨機排序
// 隨機排序 var arr = [2, 7, 2, 55, 66, 33, 2, 36, 8]; var newArr = arr.sort(num); console.log(newArr); // 輸出 [7, 33, 36, 55, 8, 66, 2, 2, 2] function num (m,u){ return Math.random() < 0.5 ? 1 : -1; }
- 陣列元素 是物件的 根據身高排序
// 身高排序
var arr = [
{name:'張三',height:160,heightUnit:'cm'},
{name:'王五',height:180,heightUnit:'cm'},
{name:'李四',height:170,heightUnit:'cm'},
];
var newArr = arr.sort(num);
console.log(newArr);
function num (m,u){
return m.height - u.height
}