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

How to sort a multidimensional object in JavaScript

本文关键字:对象 排序 JavaScript      更新时间:2023-09-26

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

我有以下对象结构

{
    "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;
});

但是如何处理对象呢?

如果您可以将结构更改为下面的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))

function sortfunc(prop){
                 return function(obj1,obj2){
                var val1 = obj1[prop];
                 var val2 = obj2[prop];
            return val1 - val2;
      };
}
groups.sort(sortfunc(prop));

prop作为属性名称传递