有个js对象数组 var ary=[{id:1,name:"b"},{id:2,name:"b"}] 需求是根据name 或者 id的值来排序,
函数定义:
使用:
函数定义:
function
keysrt(key,desc) {
return
function
(a,b){
return
desc ? ~~(a[key] < b[key]) : ~~(a[key] > b[key]);
}
}
使用:
var
ary=[{id:1,name:
"b"
},{id:2,name:
"b"
}];
ary.sort(keysrt(
'name'
,
true
));
ary.sort(keysrt(
'name'
,
false
));
ary.sort(keysrt(
'id'
,
false
));
但是在IE8中会出现排序不准的问题,可以用另一种方法来解决
/** 数组排序
*@param prop 属性字段
*@returns 排序后的数组 {Array}
*/
function rank (prop){
return function (obj1, obj2) {
var val1 = obj1[prop];
var val2 = obj2[prop];
if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
val1 = Number(val1);
val2 = Number(val2);
}
if (val1 < val2) { //降序排列
return 1;
} else if (val1 > val2) {
return -1;
} else {
return 0;
}
};
}