【问题标题】:Group by JSON array using jQuery使用 jQuery 按 JSON 数组分组
【发布时间】:2015-09-02 19:28:30
【问题描述】:

我有一组 JSON 数组,我希望将结果按"Id" 列分组。我不会为此使用 underscore.js,因为它不能在我们的项目中使用。唯一的选择是使用 jQuery。我的源数组和预期结果如下。

var origObj = [{ "Id": "1", "name": "xxx", "age": "22" },
               { "Id": "1", "name": "yyy", "age": "15" },
               { "Id": "5", "name": "zzz", "age": "59" }]

var output = [{"1": [{ "Id": "1", "name": "xxx", "age": "22" },
                     { "Id": "1", "name": "yyy", "age": "15" }],
               "5": [{ "Id": "5", "name": "zzz", "age": "59" }]}]

【问题讨论】:

  • 你能告诉我们你试过的代码吗?
  • 我尝试过使用 for 循环,但没有奏效。这就是我寻求帮助的原因。
  • 我在这里根本看不到任何 JSON。这些是 javascript 数组/对象文字。

标签: javascript jquery arrays grouping


【解决方案1】:

您可以使用Array.prototype.reduce 来完成此操作。查看此帖子以获取更多详细信息https://stackoverflow.com/a/22962158/909535 扩展这就是您所需要的

var data= [{ "Id": "1", "name": "xxx", "age": "22" },
        { "Id": "1", "name": "yyy", "age": "15" },
        { "Id": "5", "name": "zzz", "age": "59" }];
        console.log(data.reduce(function(result, current) {
            result[current.Id] = result[current.Id] || [];
            result[current.Id].push(current);
            return result;
        }, {}));

【讨论】:

  • 嘿!帅气的男人。那行得通。我只是将它分配给一个变量,而不是在控制台上打印。
  • 这似乎很好用!它是否兼容所有网络浏览器?
  • 很酷,但是我如何申请多个密钥组?
【解决方案2】:

试试

var origObj = [{ "Id": "1", "name": "xxx", "age": "22" },
               { "Id": "1", "name": "yyy", "age": "15" },
               { "Id": "5", "name": "zzz", "age": "59" }], output;
               
output = [origObj.reduce((a,c) => (a[c.Id]=(a[c.Id]||[]).concat(c),a) ,{})];

console.log(output);

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2015-02-04
    • 1970-01-01
    相关资源
    最近更新 更多