在JavaScript中合并数组以形成数组数组(ES6)

问题描述 投票:1回答:2

我有一个数组:

a = [1, 1, 1, 1]

哪个应该与数组数组合并:

b = [[0],[0],[0],[0]]

形成第三个:

c = [[0,1],[0,1],[0,1],[0,1]]

我想到的一种方法是在.forEach上运行a并连接到b的每个对象。但是,我喜欢这个,所以列表可能变得更长,例如d=[2,2,2,2]创建e=[[0,1,2],[0,1,2],[0,1,2],[0,1,2]]

a = [1, 1, 1, 1];
    
b = [[0],[0],[0],[0]];

a.forEach((number,index) => {
  b[index] = b[index].concat(number)
  });
  
  console.log(b);

谢谢!

javascript arrays ecmascript-6
2个回答
3
投票

concat方法没有附加,它会创建一个你需要的新数组。 你想要map,而不是forEach - 你混合了ab,其元素需要被包裹在数组文字中才能成为concatenated:

var a = [1, 1, 1, 1];
var b = [[0],[0],[0],[0]];

var c = a.map((number, index) => {
  return b[index].concat([number]);
});
// or the other way round:
var c = b.map((arr, index) => {
  return arr.concat([a[index]]);
});

0
投票

您可以使用reduce()方法与forEach()并创建新数组。

let a = [1, 1, 1, 1], b = [[0],[0],[0],[0]], d=[2,2,2,2,2]

const result = [b, a, d].reduce((r, a) => {
  a.forEach((e, i) => r[i] = (r[i] || []).concat(e))
  return r;
}, [])

console.log(result)
© www.soinside.com 2019 - 2024. All rights reserved.