我有一个具有以下格式的对象数组
[{'list': 'one', 'item': 1},
{'list': 'one', 'item': 2},
{'list': 'one', 'item': 3},
{'list': 'two', 'item': 1},
{'list': 'two', 'item': 2}]
我想这样改造
[{'one': [1, 2, 3]},
{'two': [1, 2]}]
如何使用 Array.map 函数来实现?这是最好的选择吗?
最佳答案
您可以使用Array.prototype.reduce
来完成您的任务。它允许在回调函数中为下一次调用返回值。
var data = [
{ 'list': 'one', 'item': 1 },
{ 'list': 'one', 'item': 2 },
{ 'list': 'one', 'item': 3 },
{ 'list': 'two', 'item': 1 },
{ 'list': 'two', 'item': 2 }
],
flat = data.reduce(function (r, a) {
r[a.list] = r[a.list] || [];
r[a.list].push(a.item);
return r;
}, {});
document.write('<pre>' + JSON.stringify(flat, 0, 4) + '</pre>');
关于javascript - 使用 map 函数在 JavaScript 中创建关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611045/