如何创建不确定数量的数组来放置 JSON 对象 (JavaScript)

how can i create an undetermined number of arrays to place JSON objects in (javascript)

本文关键字:JSON JavaScript 对象 数组 何创建 创建 不确定      更新时间:2023-09-26

我的目标是从一个JSON对象开始。 这不是我将要使用的对象,但它可以用于示例。

 var json = [
    {"id":"1","age":"20", "region":"Y"},
    {"id":"2", "age":"20", "region":"X"},
    {"id":"3", "age":"31", "region":"Z"},
    {"id":"4", "age":"35", "region":"Q"}
];

假设我的目标是根据年龄对区域进行排序。我希望创建一个函数,将 json 拆分为:

var newObj = [
              [
                {"id":"1","age":"20", "region":"Y"},
                {"id":"2", "age":"20", "region":"X"}
              ],
              [
                {"id":"3", "age":"31", "region":"Z"}
              ],
              [
               {"id":"4", "age":"35", "region":"Q"}
              ]
            ];

然后我可以对新数组进行排序。 我永远不会知道年龄会是多少,或者我需要创建多少个数组。 谢谢你的帮助。

使用下划线很容易.js:

 var items = [
    {"id":"1","age":"20", "region":"Y"},
    {"id":"2", "age":"20", "region":"X"},
    {"id":"3", "age":"31", "region":"Z"},
    {"id":"4", "age":"35", "region":"Q"}
];
var ageGroups = _.groupBy( items, "age" );

http://jsfiddle.net/w7s51hng/

如果你不想包含库,那么下划线的好处是它有注释的源代码,所以你可以看到它是如何实现的:http://underscorejs.org/docs/underscore.html#section-36

我想你想要这个:

function groupByProperty(list, prop) {
    var hash = {};
    list.forEach(function(obj) {
        var value = obj[prop];
        if (!(value in hash)) {
            hash[value] = [];
        }
        hash[value].push(object);
    });
    return Object.keys(hash).map(function(key) {
        return hash[key];
    });
}
var newObj = groupByProperty(json, 'age');