-5

我正在尝试将 n 个数组合并到一个多维中。

例子:

a = [ a1, a2 ]
b = [ b1, b2 ]

结果应该是一个多维数组,如下所示:

[ a1, b1 ]
[ a1, b2 ]
[ a2, b1 ]
[ a2, b2 ]

但这应该适用于许多数组(结果应该相同),我确信这应该以递归方式完成。

4

1 回答 1

0

这就是我想出的:

首先计算最长的数组。

然后遍历数组,遍历项目。

这是一个小提琴

var a = [ 'a1', 'a2' ],
    b = [ 'b1', 'b2' ],
    c = [ 'c1', 'c2', 'c3' ];



var to2DArray = function(){
    var maxLength = 0,
        arrays = arguments;
        resultArray = [];
    for(var i = 0; i< arrays.length; i++){
        if(arrays[i].length > maxLength) maxLength = arrays[i].length;
    }
    for(var j = 0; j < maxLength; j++){
        var subArray = [];
        for(var i = 0; i< arrays.length; i++){
            if(arrays[i][j] !== undefined) subArray.push(arrays[i][j]);
        }
        resultArray.push(subArray);
    }
    return resultArray;
}

console.log(to2DArray(a, b, c)); //resulting in: [["a1","b1","c1"],["a2","b2","c2"],["c3"]] 
于 2013-07-01T11:06:36.340 回答