首页 > 解决方案 > 在多个数组中组合“列”

问题描述

我有一个数组数组:

var arr = [
    [0, 3, 3],
    [0, 4, 3],
    [1, 3, 4],
    [1, 4, 4]
];

我想创建一个新数组,它结合了内部数组的每个索引的内容。例如,每个内部数组的索引 0 处的第一个元素是 0、0、1 和 1。我想创建一个组合这些元素的新数组,以便最终得到 [0, 1](我不'不想在新数组中重复)。下一个“列”是 3、4、3 和 4。所以我想要一个 [3, 4] 的数组。

我想要的最终结果是

[
    [0, 1],
    [3, 4],
    [3, 4]
]

我无法完全弄清楚如何做到这一点。

标签: javascriptarrays

解决方案


这里是另一个解决方案。

const result = (arr) => {

let index = 0;
  const min = Math.min(...arr.map(r => r.length)) // get min length
  const grid = [];

  while (index < min) { // loop with min
    let s = new Set(); // using set to keep unique values
    arr.forEach(r => s.add(r[index])); // pick value
    grid.push([...s]); // get array from set
    index++;
  }
  
  return grid
}

const array = [ [0, 3, 3], [0, 4, 3], [1, 3, 4], [1, 4, 4] ];

console.log(result(array))


推荐阅读