javascript - 使用 map 函数在 JavaScript 中创建关联数组

标签 javascript arrays associative-array map-function

我有一个具有以下格式的对象数组

[{'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/

相关文章:

javascript - VueJS 基于输入过滤数组

java - 随机数组值为空

javascript - 在 javascript 中,stringify 数组不返回预期的行为

python - 在python中的3D numpy数组中绘制三角形

Java:用什么数据结构来模仿PHP的关联数组?

javascript - 鼠标悬停/鼠标输入闪烁与工具提示的交互

javascript - 停用下拉菜单

javascript - 作用域如何与 JavaScript include 一起工作?

powershell - 替换包含$个字符的字符串

java - java中的多级关联数组,如php