Fuz*_*zed 0 javascript arrays object lodash
我怎样才能在javascript中简洁地实现以下操作:
[ {key:'a', value:1}, {key:'a', value:2}, {key:'b', value:4} ]
Run Code Online (Sandbox Code Playgroud)
- >
{'a':[1,2], 'b':[4] }
Run Code Online (Sandbox Code Playgroud)
代码简单是我真正想要的,我已经在使用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));Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅MDN文档reduce.
如果你必须支持IE8或更低版本(没有reduce),你可以使用polyfill,或者你可以手动循环遍历数组并设置对象键(这看起来更丑).看起来lodash也已经有了reduce功能.
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |