jsonランキングは百度から抜粋

2546 ワード

var sortBy = function (filed, rev, primer) {    rev = (rev) ? -1 : 1;    return function (a, b) {        a = a[filed];        b = b[filed];        if (typeof (primer) != 'undefined') {            a = primer(a);            b = primer(b);        }        if (a < b) { return rev * -1; }        if (a > b) { return rev * 1; }        return 1;    }};var obj = [    {b: '3', c: 'c'},     {b: '1', c: 'a'},    {b: '2', c: 'b'}];1、数字の並べ替え

    obj.sort(sortBy('b', false, parseInt)); 
   
console.log(obj);

2、文字列のソート

    obj.sort(sortBy('b', false, String)); 
   
console.log(obj);

二、JSON並べ替え例2
 
   
var willSort = [
    {
        name:'shangwenhe',
        age:25,
        height:170
    },
    {
        name:'zhangsan',
        age:31,
        height:169
    },
    {
        name:'lisi',
        age:31,
        height:167
    },
    {
        name:'zhaowu',
        age:22,
        height:160
    },
    {
        name:'wangliu',
        age:23,
        height:159
    }
];


/*
    @function     JsonSort json
    @param        json     json
    @param        key     
*/
function JsonSort(json,key){
    //console.log(json);
    for(var j=1,jl=json.length;j < jl;j++){
        var temp = json[j],
            val  = temp[key],
            i    = j-1;
        while(i >=0 && json[i][key]>val){
            json[i+1] = json[i];
            i = i-1;   
        }
        json[i+1] = temp;

    }
    //console.log(json);
    return json;

}
var json = JsonSort(willSort,'age');
console.log(json);


三、JSON並べ替え例3
var people = [{    name: 'a75',    item1: false,    item2: false},{    name: 'z32',    item1: true,    item2: false},{    name: 'e77',    item1: false,    item2: false}];
function sortByKey(array, key) {    return array.sort(function(a, b) {        var x = a[key]; var y = b[key];        return ((x < y) ? -1 : ((x > y) ? 1 : 0));    });}
people = sortByKey(people, 'name');