首页 > 解决方案 > 对复杂数组进行分组

问题描述

我有一个这样的数组:

scripts
    [
      ["scriptNameA", "dateAsString1", number],
      ["scriptNameB", "dateAsString1", number],
      ["scriptNameC", "dateAsString2", number],
      ["scriptNameD", "dateAsString3", number],
      ["scriptNameE", "dateAsString3", number]
    ]

我想得到一个按日期分组的数组

scriptsGroupedByDate[
    "dateAsString1"[
        ["scriptNameA", "dateAsString1", number],
        ["scriptNameB", "dateAsString1", number]
    ],
    "dateAsString2"[
        ["scriptNameC", "dateAsString2", number]
    ],
    "dateAsString3"[
        ["scriptNameD", "dateAsString3", number],
        ["scriptNameE", "dateAsString3", number]
    ]
]

有没有办法做到这一点 ?谢谢你

标签: javascriptarraysgroup-by

解决方案


let number = 0;

let scripts =
    [
        ["scriptNameA", "dateAsString1", number],
        ["scriptNameB", "dateAsString1", number],
        ["scriptNameC", "dateAsString2", number],
        ["scriptNameD", "dateAsString3", number],
        ["scriptNameE", "dateAsString3", number]
    ];

var result = scripts.reduce((a, b) => (a[b[1]] ? a[b[1]].push(b) : a[b[1]] = [b], a), {});

console.log(result);


推荐阅读