首页 > 程序分享 > JSON排序方法 - 原生sort方法扩展
2017
07-05

JSON排序方法 - 原生sort方法扩展

/*
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);

 



最后编辑:
作者:Tony
这个人很懒什么也没留!~

发布评论

表情