
原文:
The
sort()方法用于对数组的元素进行排序并返回数组. 默认排序顺序基于字符串Unicode代码点.
语法: array.sort(fun);参数fun是可选的. 指定排序顺序. 必须是一个函数.
注意: 如果在不带参数的情况下调用该方法,则数组中的元素将按照字符编码的顺序按字母顺序排序(更精确地说).
如果要根据其他规则进行排序,则需要提供一个比较函数,该函数比较两个值,然后返回一个描述两个值的相对顺序的数字. 比较函数应具有两个参数a和b,返回值如下:
如果a小于b,则a应该出现在排序数组中的b之前,然后返回小于0的值.
如果a等于b,则返回0.
如果a大于b,则返回大于0的值.
简单的一点是: 比较函数的两个参数a和b,返回a-b的升序,返回b-a的降序
//注意: 原始数组已更改
示例:
1. 如果不传递任何参数,则不会根据值的大小对其进行排序,而是根据字符编码顺序进行排序;
var arr = ['General','Tom','Bob','John','Army'];
var resArr = arr.sort();
console.log(resArr); //输出[“军队”,“鲍勃”,“一般”,“约翰”,“汤姆”]

var arr2 = [30,10,111,35,1899,50,45];
var resArr2 = arr2.sort();
console.log(resArr2); //输出[10,111,1899,30,35,45,50]
2. 传入参数实现升序和降序;
var arr3 = [30,10,111,35,1899,50,45];
arr3.sort(function(a,b){
返回a-b;
})
console.log(arr3); //输出[10,30,35,45sort 排序,50,111,1899]
var arr4 = [30,10,111,35,1899,50,45];
arr4.sort(function(a,b){
返回b-a;
})
console.log(arr4); //输出[1899,111,50,45,35,30,10]
3. 根据数组中对象的属性值排序;
var arr5 = [{id: 10},{id: 5},{id: 6},{id: 9},{id: 2}sort 排序,{id: 3}];

arr5.sort(function(a,b){
返回a.id-b.id
})
console.log(arr5);
//输出新排序
// {id: 2}
// {id: 3}
// {id: 5}
// {id: 6}
// {id: 9}
// {id: 10}
更改为参数方法
arr5.sort(sortBy(attr,rev));
// attr: 根据属性排序; rev: 递增1或递减-1,如果未填充,则默认值为1
sortBy(attr,rev){
if(rev == undefined){rev = 1} else {(rev)?1: -1; }

重新运行功能(a,b){
a = a [attr];
b = b [attr];
if(a
if(a> b){return rev * 1}
重新运行0;
}
}
4. 按数组中对象的多个属性值排序,按多个条件排序;
var arr6 = [{id: 10,age: 2},{id: 5,age: 4},{id: 6,age: 10},{id: 9,age: 6},{id: 2,age: 8},{id: 10,age: 9}];
arr6.sort(function(a,b){
if(a.id === b.id){//如果id相同,则按年龄降序
返回b.age-a.age
}其他{
返回a.id-b.id
}

})
console.log(arr6);
//输出新排序
// {id: 2,年龄: 8}
// {id: 5岁,年龄: 4}
// {id: 6,年龄: 10}
// {id: 9,年龄: 6}
// {id: 10,年龄: 9}
// {id: 10,年龄: 2}
5. 排序通常用于复制!因为排序会改变原始数据的顺序.
var dataTemp = data.concat([]);
6. 按排序排序以找到最大值.


function getMax(arr) { if (arr != null && (arr instanceof Array) && arr.length > 0) { let arr2 = arr.concat([]); arr2.sort(function (a, b) { return a - b }) let max = arr2[arr2.length - 1]; console.log('max', max); return max; } return null; } function getMax2(arr, name) { if (arr != null && (arr instanceof Array) && arr.length > 0) { let arr2 = arr.concat([]); arr2.sort(function (a, b) { return a[name] - b[name] }) let max = arr2[arr2.length - 1][name]; console.log('max', max); return max; } return null; }
查看代码
相关信息:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-279219-1.html
兑来兑去的东西
苹果5升级到9
日本海军联合舰队总吨位是超过北洋舰队的