对象排序

 var data={
        "x":{
            "id":8,
            "name":"x",
            },
        "y":{"id":1,"name":"y",},
        "s":{"id":1,"name":"s",},
        "g":{"id":9,"name":"g",},
    },
    data1={
        "x":8,
        "y":1,
        "s":2,
        "g":7,
    };
function sortObject(key,value,name,bool){
    /*
     *
        key:排序指定到某一个值,对比大小排序
        value:数据
        name:某一个值作为对象的key
        bool:true是从大到小排序,false是从小到大排序
    */
    var  _current={};
    if (!Object.values) {
        Object.values = function values(d) {
            var _currentArr=[];
            for(var _i in d){
                _currentArr.push(d[_i])
            }
            return _currentArr;
        };
    }
    var _sort;
    if(!bool){
        _sort=Object.values(value).sort(function(v,k){
            return (key?v[key]:v) - (key?k[key]:k);
        });
    }else{
        _sort=Object.values(value).sort(function(v,k){
            return  (key?k[key]:k) - (key?v[key]:v);
        });
    }
    for(var _k=0 ; _k < _sort.length; _k++){
        if(name){
            _current[_sort[_k][name]]=_sort[_k];
        }else{
            _current[_k]=_sort[_k];
        }
    }
    console.log(JSON.stringify(_current))
    return JSON.parse(JSON.stringify(_current));
}
sortObject('id',data,'name',false);
 
效果

 

 

posted @ 2020-03-23 11:51  hcw969376855  阅读(131)  评论(0编辑  收藏  举报