如何在 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/