我有一个数组:
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);
谢谢!
concat
方法没有附加,它会创建一个你需要的新数组。
你想要map
,而不是forEach
- 你混合了a
和b
,其元素需要被包裹在数组文字中才能成为concat
enated:
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]]);
});
您可以使用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)