进入11月份来,由于团队fe人力紧缺,外加楼主实习生一枚写东西比较慢,所以一直在加班,没能抽出时间更新自己的博客,早上抽点时间来把昨晚写的函数记录一下。。。
(一)背景
最近在处理一组对象,需求里说需要根据某一字段还有升序降序条件来排列对象,在放到table中展示,于是便有了下面这个函数。
(二)函数方法
我们现定义一个对象,对象如下:
var data = [{
name: "deron",
age: 21
}, {
name: "miaolun",
age: 23
}, {
name: "pipi",
age: 18
}, {
name: "yujia",
age: 22
}, {
name: "huangze",
age: 29
}];来看一下我们的函数方法,
function sortObj(propertyName,cond) {
return function(object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if(cond == 1){//降序
if (value2 < value1) {
return - 1;
} else if (value2 > value1) {
return 1;
} else {
return 0;
}
}else if(cond == 0){//升序
if (value2 < value1) {
return 1;
} else if (value2 > value1) {
return - 1;
} else {
return 0;
}
}
}
}(三)调用
函数第一个参数为需要排序的对象,第二个参数为升降序,再结合js本身的sort方法来达到排序对象的目的:
data.sort(sortObj("age",1));打印输出结果:
Array(5)
0:{name: "CCCCCCCCc", age: 25}
1:{name: "jiang", age: 22}
2:{name: "AAAAAAAAAAAAAA", age: 21}
3:{name: "CCCCCCCCccc", age: 11}
4:{name: "CCCCCCCCcaaa", age: 10}
length:5
__proto__:Array(0)好了,去上班了~