javascript - 在 javascript 中映射对象数组并按键分组

标签 javascript arrays object lodash

如何在 javascript 中简洁地实现以下操作:

[ {key:'a', value:1}, {key:'a', value:2}, {key:'b', value:4} ]

->

{'a':[1,2], 'b':[4] }

代码简单是我真正想要的,我已经在使用 lodash,但我无法真正弄清楚如何进行这种操作。

最佳答案

尝试使用reduce:

var arr = [ {key:'a', value:1}, {key:'a', value:2}, {key:'b', value:4} ];

var obj = arr.reduce(function(acc, x) {
    if (!acc[x.key]) acc[x.key] = [];
    acc[x.key].push(x.value);
    return acc;
}, {});

document.write(JSON.stringify(obj));

参见MDN docs on reduce了解更多信息。

如果您必须支持 IE8 或更低版本(没有 reduce),您可以使用 a polyfill ,或者您可以手动循环数组并设置对象键(这看起来更难看)。看起来像 lodash also already has a reduce function, too .

关于javascript - 在 javascript 中映射对象数组并按键分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516527/

相关文章:

javascript - 使用 jQuery 的 animate with css 过滤器。

javascript - Angular-material md-button 自动悬停效果

javascript - 如何在javascript函数参数中回显带有特殊字符的php字符串

php - 如何在 PHP 中将 3 个数组合并为一个关联数组

javascript - 根据数组中字符串值的索引对对象数组进行排序

php关联数组类变量

c++ - 甚至在创建该类之前声明一个对象

javascript - 如何立即执行 promise

C 警告 : assignment makes integer from pointer without a cast

javascript - typescript 返回对象的副本