几维阵列到多维数组

时间:2015-11-30 11:40:20

标签: javascript arrays multidimensional-array

以前可能会问过,我只是不知道如何搜索这个特定的场景。

我有几个数组(总长度相同)

array1 = [value1a1, value2a1, value3a1];
array2 = [value1a2, value2a2, value3a2];
array3 = [value1a3, value2a3, value3a3];

我需要组合一个看起来像这样的多维数组:

multiArray = [
                [value1a1, value1a2, value1a3],
                [value2a1, value2a2, value2a3],
                [value3a1, value3a2, value3a3]
];

最好的方法是什么?

2 个答案:

答案 0 :(得分:6)

var multiArray = [];
multiArray.push(array1);
multiArray.push(array2);
multiArray.push(array3);

Array.push()

甚至:

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 === 3arrays[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;
};

此函数接受任意数量的参数,前提是所有参数都是具有三个键的数组。它们将根据问题中的描述进行合并。