如何在javascript中根据索引组合数组?

时间:2018-11-17 12:21:00

标签: javascript arrays

我有两个二维数组:

var ar1 = [];
var ar1[0] = [];
var ar1[0][0] = 1;
var ar1[0][1] = 2;
var ar1[1] = [];
var ar1[1][0] = 3;
var ar1[1][1] = 4;

var ar2 = [];
var ar2[0] = [];
var ar2[0][3] = 5;
var ar2[0][4] = 6;
var ar2[1] = [];
var ar2[1][5] = 7;
var ar2[1][6] = 8;

如何获得组合数组,如下所示:

var ar1[0][0] = 1;
var ar1[0][1] = 2;
var ar1[1][0] = 3;
var ar1[1][1] = 4;
var ar1[0][3] = 5;
var ar1[0][4] = 6;
var ar1[1][5] = 7;
var ar1[1][6] = 8;

我尝试过:

ar1.push(ar2);

但是这会将整个ar2放在ar1的第一个空行中。

2 个答案:

答案 0 :(得分:3)

一种可能性是在第二个数组上forEach,并将每个子数组Object.assign放在第一个数组的适当索引上:

var ar1 = [];
ar1[0] = [];
ar1[0][0] = 1;
ar1[0][1] = 2;
ar1[1] = [];
ar1[1][0] = 3;
ar1[1][1] = 4;

var ar2 = [];
ar2[0] = [];
ar2[0][3] = 5;
ar2[0][4] = 6;
ar2[1] = [];
ar2[1][5] = 7;
ar2[1][6] = 8;

ar2.forEach((subarr2, i) => {
  Object.assign(ar1[i], subarr2);
});
console.log(ar1);

请注意,var仅在第一次声明新变量名时才使用-在分配给现有变量时,请忽略它。 (此外,稀疏数组很少是一个好主意)

答案 1 :(得分:1)

您可以迭代第二个数组并将所有值分配给第一个数组。对于第二级中未给定的数组,请使用默认数组。

var ar1 = [],
    ar2 = [];

ar1[0] = [];
ar1[0][0] = 1;
ar1[0][1] = 2;
ar1[1] = [];
ar1[1][0] = 3;
ar1[1][1] = 4;

ar2[0] = [];
ar2[0][3] = 5;
ar2[0][4] = 6;
ar2[1] = [];
ar2[1][5] = 7;
ar2[1][6] = 8;

ar2.forEach((a, i) => {
    ar1[i] = ar1[i] || [];
    a.forEach((v, j) => ar1[i][j] = v);
});
console.log(ar1);