更具体地说,是否有更简单的方法:
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
test0.forEach(
function(item0, index) {
test1[index].forEach(
function(item1) {
item0.push(item1);
}
);
}
);
我尝试在concat()
的第一级使用forEach()
,但由于仍然无法逃脱我的原因而无法使用...
编辑: 感谢您的第一个答案。 奖金问题,为什么这个不起作用?
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
test0.forEach(
function(item, index) {
item.concat(test1[index]);
}
);
预先感谢
答案 0 :(得分:3)
一种选择是使用.map
并展开两个数组,从另一个较大数组中的适当索引中获取第二个内部数组:
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
console.log(test0.map((arr, i) => [...arr, ...test1[i]]));
答案 1 :(得分:3)
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
test0 = test0.map((a,i) => [...a, ...test1[i]]);
console.log(test0);
答案 2 :(得分:3)
基准:https://jsperf.com/merge-array-based-on-index
let test0 = [[0,2,4], [1,3,5]];
let test1 = [[6,8], [7,9,11]];
let result = []
for (let i = 0; i < test0.length; i++) {
result[i] = [...test0[i], ...test1[i]]
}
console.log(result)
答案 3 :(得分:1)
任意数量数组的解决方案。
var test0 = [[0, 2, 4], [1, 3, 5]],
test1 = [[6, 8], [7, 9, 11]],
result = [test0, test1].reduce((a, b) => a.map((v, i) => [...v, ...b[i]]))
console.log(result);
答案 4 :(得分:1)
concat
将生成一个新数组,而不是修改当前数组。因此,为了使其正常工作,您需要将新生成的数组分配回同一索引上的父数组。
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
test0.forEach(
function(item, index) {
test0[index] = item.concat(test1[index]);
}
);
console.log(test0);
或者您也可以使用map
。
var test0 = [[0,2,4], [1,3,5]];
var test1 = [[6,8], [7,9,11]];
var mergedArray = test0.map(
function(item, index) {
return item.concat(test1[index]);
}
);
console.log(mergedArray);
ES6解决方案
由于可读性更好,我更喜欢使用concat
来扩展语法。
let test0 = [[0,2,4], [1,3,5]];
let test1 = [[6,8], [7,9,11]];
console.log(test0.map((arr, i) => arr.concat(test1[i])));