如何在JavaScript中对多维对象进行排序

时间:2015-11-06 16:08:03

标签: javascript sorting object multidimensional-array

如何按年龄值对对象进行排序?

我有以下对象结构

{
    "men": {
        "20114": {
            "id": "20114",
            "name": "Peter",
            "age": "21"
        },
        "28957": {
            "id": "28957",
            "name": "Paul",
            "age": "20"
        }
    },
    "women": {
        "8957": {
            "id": "8957",
            "name": "Rose",
            "age": "24"
        },
        "2178": {
            "id": "2178",
            "name": "Sara",
            "age": "22"
        }
    },
}

我知道,我可以像这样排序数组

groups.sort(function(a, b) {
    return b.age - a.age;
});

但如何使用对象?

2 个答案:

答案 0 :(得分:0)

function sortfunc(prop){
                 return function(obj1,obj2){
                var val1 = obj1[prop];
                 var val2 = obj2[prop];

            return val1 - val2;

      };
}

groups.sort(sortfunc(prop));

prop作为媒体资源名称

传递

答案 1 :(得分:0)

如果您可以将结构更改为下面的JSON模型,那么对数据进行排序要容易得多:



var data = [
    {
        "id": "20114",
        "name": "Peter",
        "age": "21",
        "gender": "men"
    },
    {
        "id": "28957",
        "name": "Paul",
        "age": "20",
        "gender": "men"
    },
    {
        "id": "8957",
        "name": "Rose",
        "age": "24",
        "gender": "women"
    },
    {
        "id": "2178",
        "name": "Sara",
        "age": "22",
        "gender": "women"
    }
]

data.sort(function(a, b) {
    return parseFloat(a.age) - parseFloat(b.age);
});

data.sort()


document.write(JSON.stringify(data))