以前可能会问过,我只是不知道如何搜索这个特定的场景。
我有几个数组(总长度相同)
array1 = [value1a1, value2a1, value3a1];
array2 = [value1a2, value2a2, value3a2];
array3 = [value1a3, value2a3, value3a3];
我需要组合一个看起来像这样的多维数组:
multiArray = [
[value1a1, value1a2, value1a3],
[value2a1, value2a2, value2a3],
[value3a1, value3a2, value3a3]
];
最好的方法是什么?
答案 0 :(得分:6)
var multiArray = [];
multiArray.push(array1);
multiArray.push(array2);
multiArray.push(array3);
甚至:
var multiArray = [array1, array2, array3];
JSFiddle example of 2nd approach
@MartijnOtto是对的,我以前的解决方案是错误的。我没有仔细阅读。我已使用以下代码创建了new JSFiddle:
var array1 = ["value1a1", "value2a1", "value3a1", "value4a1"];
var array2 = ["value1a2", "value2a2", "value3a2", "value4a2"];
var array3 = ["value1a3", "value2a3", "value3a3", "value4a3"];
var arrays = [array1, array2, array3];
var multiArray = [];
// initialize 2D array
for (var i=0; i<arrays[0].length; i++) {
multiArray[i] = [];
}
// fill values
for (var i=0; i<arrays.length; i++) {
for (var j=0; j<arrays[i].length; j++) {
multiArray[j].push(arrays[i][j]);
}
}
result.innerHTML = JSON.stringify(multiArray, null, 2);
编辑:索引还有一个小错误。在JSFiddle和代码中修复它也可以使用不成比例的数组大小(例如:arrays.length === 3
和arrays[i].length === 4
。
答案 1 :(得分:1)
var merge = function() {
var result = [];
for (var i = 0; i < 3; ++i)
{
var intermediate = [];
for (var j in arguments) intermediate.push(arguments[j][i]);
result.push(intermediate);
}
return result;
};
此函数接受任意数量的参数,前提是所有参数都是具有三个键的数组。它们将根据问题中的描述进行合并。