将两个数组中的元素分组到另一个数组的一个元素

时间:2021-03-07 17:02:22

标签: javascript angular

我需要以这种方式相互链接三个数组:

  1. arr1 = ['A', 'A, 'B', 'B' 'C', 'C', 'A', 'C']
  2. arr2 = ['a', 'aa', 'b', 'bb', 'c','cc', 'aaa', 'ccc']
  3. arr3 = [1, 2, 3, 4, 5, 6, 7, 8]

我希望这些数组像这样链接:[['A', ['a', 1], ['aa',2], ['aaa', 7]], ['B', [ 'b', 3], ['bb',4]], ['C', ['c', 5], ['cc',6], ['ccc',8]]]

如何创建这个新数组?注意:元素按顺序推送,因此 arr1[0] 链接到 arr2[0],arr1[1] 链接到 arr2[1]

1 个答案:

答案 0 :(得分:1)

您可以按第一个数组分组。

const
    array1 = ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'C'],
    array2 = ['a', 'aa', 'b', 'bb', 'c', 'cc', 'aaa', 'ccc'],
    array3 = [1, 2, 3, 4, 5, 6, 7, 8],
    values = [array2, array3],
    result = Object.values(array1.reduce((r, v, i) => {
        r[v] ??= [v];
        r[v].push(values.map(a => a[i]));
        return r;
    }, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关问题