JSON及JSON数组

厉永宁
2023-12-01
/*
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);
var data = [{
                name: "海外事业部",
                value: 0.58
            }, {
                name: "内销",
                value: 0.36
            }, {
                name: "互联网中心",
                value: 0.78
            }];  
            //定义一个比较器--降序排列
            function compare(propertyName) {
                return function(object1, object2) {
                    var value1 = object1[propertyName];
                    var value2 = object2[propertyName];
                    if(value2 < value1) {
                        return -1;
                    } else if(value2 > value1) {
                        return 1;
                    } else {
                        return 0;
                    }
                }
            }
                console.info(JSON.stringify(data));
            //使用方法 
            data.sort(compare("value"));
            console.info(JSON.stringify(data));
//Json数组去重
<script type="text/javascript">
 var obj=[{
      id:1,
      name:'张甜甜',
      age:20
    },{
      id:2,
      name:'一丢丢',
      age:22
    },{
      id:1,
      name:'张甜甜',
      age:20
    },{
      id:3,
      name:'zen',
      age:28
    },{
      id:5,
      name:'张小颖',
      age:22
    },{
      id:2,
      name:'一丢丢',
      age:22
    },{
      id:4,
      name:'五河士道',
      age:20
    }];
    for(var i=0;i<obj.length;i++){
      for(var j =obj.length - 1; j > 0; j--){
        if(obj[i].id ==  obj[j].id && i != j){
          obj.splice(j, 1);
        }
      }
    }
</script>

 类似资料: