今天跟大家分享下js中数组的排序函数sort的用法和说明
sort函数使用起来简单,但是理解起来还是有点绕的,我这里也跟大家做了通俗易懂的解释
话不多说,直接上码,代码很少,注释写了一大堆哈哈哈,怕大家不好理解
//初始化一个数组/集合
var valueStr = '张三/男/18/1995-2-22/10000,李四/女/26/1988-12-12/8888,王五/男/15/2003-6-23/3000';
var userList = valueStr.split(',').map((valueStrItem, index) => {
var arr = valueStrItem.split('/');
var user = {
UserId: index + 1,
Name: arr[0],
Sex: arr[1],
Age: parseInt(arr[2]),
Birthday: lingbugUtil.dateFormat(new Date(arr[3]), 'yyyy-MM-dd w'),
Salary: parseInt(arr[4])
};
return user;
});
debugger;
//使用排序方法,并且指定排序逻辑(告诉它如何排序),注意:这个方法,会改变原有的数组/集合
userList.sort((before, after) => {
//第一个参数是前一个对象,第二个参数是后一个对象(这里的前后都是相对于默认集合/数组的排序而言)
//也就是第一个参数的位置目前所在的位置在第二个参数所在的位置前面(这里大家可以调试去查看就知道了)
//求差:如果差值flag大于0,这两个就要对调位置
var flag = after.Age - before.Age;
//所以:
//如果想要降序,就后面的减前面的,如果后面的比前面的大,就会大于0,就会对调位置啦
//如果想要升序,就前面的减后面的,如果前面的比后面的大,也会对调位置
return flag;
});
debugger;
var test = null;
//教大家一个最好记的方法:
//1.第一个参数是升序,第二个参数是降序
//2.如果想要xx序,就用xx序参数 - 另外一个参数
//例如:我想按照年龄升序:就升序参数的年龄 - 另一个参数的年龄
userList.sort((ascItem, descItem) => {
return ascItem.Age - descItem.Age;
});
debugger;
test = null;
//再例如:我想按照薪资倒序:就倒序参数的薪资 - 另一个参数的薪资
userList.sort((ascItem, descItem) => {
return descItem.Salary - ascItem.Salary;
});
debugger;
test = null;
Ending~