将数组初始化为一个值,这是在第一个数组上合并到第二个数组的最佳方法吗?
var a = [[0,0,0,0], [0,0,0,0]]; // 2x4
var b = [[1,1], [2,2]];
可以使用简单的维度:
var base = [0, 0, 0, 0, 0, 0, 0, 0];
var add = [1, 2, 3, 4];
for (i in add) {
base[i] = add[i];
}
>>> base
[1, 2, 3, 4, 0, 0, 0, 0]
但是2或3维怎么样?
答案 0 :(得分:2)
两个维度:
for (i in add) {
for (j in add[i])
base[i][j] = add[i][j];
}
三个维度:
for (i in add) {
for (j in add[i])
for (k in add[i][j])
base[i][j][k] = add[i][j][k];
}
等。
对于任意数量的维度,您可以递归地解决问题:
function merge(source, destination){
if (source[0] instanceof Array) {
for (i in source) merge(source[i], destination[i]) // go deeper
}
else {
for (i in source) destination[i] = source[i];
}
}
您可以通过以下方式调用它:merge (add, base);
答案 1 :(得分:1)
试试这个:
var mergeArr = function(arrFrom, arrTo) {
for(var i=0;i<arrFrom.length; i++) {
if (Array.isArray(arrFrom[i]) && Array.isArray(arrTo[i])) {
mergeArr(arrFrom[i], arrTo[i]);
} else {
arrTo[i] = arrFrom[i];
}
}
}
应该使用任何尺寸。