sort() 方法用于对数组的元素进行排序。
排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。
一、语法:
arr.sort((m, n) => { ... 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, n) => { 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, t) => { 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, t) => { return t.age - s.age; }); console.log(arr) // [{ name: "王五", age: 37 }, { name: "张三", age: 26 }, { name: "李四", age: 12 }, { name: "赵六", age: 4 }]
4、对包含对象的数组排序,要求根据对象中的姓名不区分大小写进行由小到大的顺序排列(字符串型)
const arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'D李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'C赵六', age: 4 }]; arr.sort((s, t) => { 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; } }); console.log(arr) // [{ name: "a张三", age: 26 }, { name: "b王五", age: 37 }, { name: "C赵六", age: 4 }, { name: "D李四", age: 12 }]
三、拓展
1、对数组元素随机排序
var arr = [{ 'name': 'a张三', age: 26 }, { 'name': 'd李四', age: 12 }, { 'name': 'b王五', age: 37 }, { 'name': 'c赵六', age: 4 }]; arr.sort((s, t) => { return Math.random() < 0.5 ? 1 : -1; });