JavaScript中数组Array.sort()排序方法详解
转载
JavaScript中数组的sort()方法主要用于对数组的元素进行排序。
一、原理:
arr.sort((m,) => { ... return (number); }
sort内的函数返回值小于0, m排在n前面; 返回值等于 0, m,n相等顺序无关要紧; 返回值大于 0, m排在n后面;
二、代码实例
1、对数字数组进行由小到大的顺序进行排序。
var arr = [22, 12, 3, 43, 56, 47, 4];
arr.sort();
console.log(arr); // [12, 22, 3, 4, 43, 47, 56]
arr.sort((m,) => {
if (m < n) return -1;
else if (m > n) return 1;
else return 0;
});
console.log(arr); // [3, 4, 12, 22, 43, 47, 56]
2、对字符串数组执行不区分大小写的字母表排序。
var arr = ['abc', 'Def', 'BoC', 'FED'];
console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"]
console.log(arr.sort((s,) => {
var a = s.toLowerCase();
var b = t.toLowerCase();
if (a < b) return -1;
if (a > b) return 1;
return 0;
})); // ["abc", "BoC", "Def", "FED"]
3、对包含对象的数组排序,要求根据对象中的年龄进行由大到小的顺序排列(数值型)
var arr = [{ 'name': '张三', age: 26 }, { 'name': '李四', age: 12 }, { 'name': '王五', age: 37 }, { 'name': '赵六', age: 4 }];
arr.sort((s,) => {
return s.name-t.name;
});
4、对包含对象的数组排序,要求根据对象中的姓名不区分大小写进行由大到小的顺序排列(字符串型)
const arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'D李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'C赵六', age: 4 }];
arr.sort((s,) => {
const _s = s.name.toLowerCase(); // 'D李四' -> 'd李四'
const _t = t.name.toLowerCase();
if (_s > _t) {
return 1;
}
else if (_s < _t) {
return -1;
}
else {
return 0;
}
});
三、拓展
1、对数组元素随机排序
var arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'd李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'c赵六', age: 4 }];
arr.sort((s,) => {
return Math.random() < 0.5 ? 1 : -1;
});