sort()上篇:
https://blog.csdn.net/qq_33650655/article/details/91433487
原文:
https://www.cnblogs.com/saifei/p/9043821.html
多对象排序:
https://www.cnblogs.com/fnz0/p/7680297.html
sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。
语法:arrayObject.sort(sortby);
参数sortby 可选,用来规定排序的顺序,但必须是函数。
例一:按照字母顺序排序
例二:还是按照字母进行排序
纳尼,这次排序似乎没有得到想要的结果。。。。。。
如果要得到自己想要的结果,不管是升序还是降序,就需要提供比较函数了。该函数比较两个值的大小,然后返回一个用于说明这两个值的相对顺序的数字。
比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
若 a 等于 b,则返回 0。
若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。
例三:升序排列
例四:降序排序
如果想根据数组对象中的某个属性值进行排序怎么办呢???
例五:按照数组对象中某个属性值进行排序
例六:根据参数来确定是升序还是降序
例7:sort()双重排序
var jsonStudents = [
{name:"Dawson", totalScore:"197", Chinese:"100",math:"97"},
{name:"HanMeiMei", totalScore:"196",Chinese:"99", math:"97"},
{name:"LiLei", totalScore:"185", Chinese:"88", math:"97"},
{name:"XiaoMing", totalScore:"196", Chinese:"96",math:"100"},
{name:"Jim", totalScore:"196", Chinese:"98",math:"98"},
{name:"Joy", totalScore:"198", Chinese:"99",math:"99"}];
jsonStudents.sort(function(a,b){
var value1 = a.totalScore,
value2 = b.totalScore;
if(value1 === value2){
return b.Chinese - a.Chinese;
}
return value2 - value1;
});
console.log(jsonStudents)
输出:
0:{name: "Joy", totalScore: "198", Chinese: "99", math: "99"}
1:{name: "Dawson", totalScore: "197", Chinese: "100", math: "97"}
2:{name: "HanMeiMei", totalScore: "196", Chinese: "99", math: "97"}
3:{name: "Jim", totalScore: "196", Chinese: "98", math: "98"}
4:{name: "XiaoMing", totalScore: "196", Chinese: "96", math: "100"}
5:{name: "LiLei", totalScore: "185", Chinese: "88", math: "97"}
// 当然,如果需要多重排序,只需要在sort传入的函数里在加判断就可以了,这里就不过多赘述。