/*
JSON排序方法 - 原生sort方法扩展
var obj = [
{b: '3', c: 'c'},
{b: '1', c: 'a'},
{b: '2', c: 'b'}
];
obj.sort(sortBy('b', false, parseInt));
console.log(obj); 按照b的数字大小排序 正序
obj.sort(sortBy('b', false, String));
console.log(obj); 按照b的字符串大小排序 正序
----------------------------------------------
@function filed 要排序的键值
@param rev 正序或者倒叙 false正序 true倒叙
@param primer 排序比较格式化方法 parseInt String 或其它自定义的函数
*/
var sortBy = function (filed, rev, primer) {
rev = (rev) ? -1 : 1;
return function (a, b) {
a = a[filed];
b = b[filed];
if (primer && typeof (primer) != 'undefined') {
a = primer(a);
b = primer(b);
}else{
if(!isNaN(a) && !isNaN(a)){
a = Number(a);
b = Number(b);
}
}
if (a < b) { return rev * -1; }
if (a > b) { return rev * 1; }
return 1;
}
};
以下是排序案例:
//声明一个json数组
var obj = [
{b: '3', c: 'c'},
{b: '1', c: 'a'},
{b: '2', c: 'b'}
];
//自动识别排序,如果b是数字按照数字排序
obj.sort(sortBy('b', false));
console.log(obj);
//按照b的整数排序
obj.sort(sortBy('b', false, parseInt));
console.log(obj);
//按照b的字符串
obj.sort(sortBy('b', false, String));
console.log(obj);
评论 (0)