進入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)複製程式碼
好了,去上班了~