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

在JavaScript(ES6)中合并数组以形成数组数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个建议: a = [1, 1, 1, 1] 应将其与阵列阵列合并: b = [[0],[0],[0],[0]] 组成第三个: c = [[0,1],[0,1],[0,1],[0,1]] 我想到的一种方法是在a上运行.forEach,并连接到b的每个对象。但是,我希望这样做,这样列表可能会变长,例如d=[2,2,2]creatinge=[[0,1,2],[0,1,2],[0,1,2],[0,1,2]] a=[1,1,1,1]; b=[[0]、[0]、[0]、[0]]; a、 forE

我有一个建议:

a = [1, 1, 1, 1]
应将其与阵列阵列合并:

b = [[0],[0],[0],[0]]
组成第三个:

c = [[0,1],[0,1],[0,1],[0,1]]
我想到的一种方法是在
a
上运行
.forEach
,并连接到
b
的每个对象。但是,我希望这样做,这样列表可能会变长,例如
d=[2,2,2]
creating
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((编号、索引)=>{
b[index]=b[index].concat(编号)
});
控制台日志(b)
您可以使用
reduce()
方法和
forEach()
并创建新数组

设a=[1,1,1,1],b=[0],[0],[0],[0]],d=[2,2,2,2]
const result=[b,a,d]。reduce((r,a)=>{
a、 forEach((e,i)=>r[i]=(r[i]| |[])。concat(e))
返回r;
}, [])

console.log(result)
concat
方法不会追加,它会创建一个新的数组,您需要使用它来添加内容。
您需要的是
map
,而不是
forEach
——您将
a
b
混合在一起,其中的元素需要包装在数组文字中才能启用
concat

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]]);
});

您是否尝试过将其作为
a[index]
而不是
[a[index]]
?@Matt
concat
也适用于非数组值(如
a
整数),但在讨论类型时,我发现这令人困惑。