n 個の配列を 1 つの多次元にマージしようとしています。
例:
a = [ a1, a2 ]
b = [ b1, b2 ]
結果は次のような多次元配列になります。
[ a1, b1 ]
[ a1, b2 ]
[ a2, b1 ]
[ a2, b2 ]
しかし、これは多数の配列に対して機能するはずです(結果は同じである必要があります)。これは再帰的な方法で行う必要があると確信しています。
n 個の配列を 1 つの多次元にマージしようとしています。
例:
a = [ a1, a2 ]
b = [ b1, b2 ]
結果は次のような多次元配列になります。
[ a1, b1 ]
[ a1, b2 ]
[ a2, b1 ]
[ a2, b2 ]
しかし、これは多数の配列に対して機能するはずです(結果は同じである必要があります)。これは再帰的な方法で行う必要があると確信しています。
これは私が思いついたものです:
最初に最長の配列を計算します。
次に、配列をループし、アイテムをループします。
ここにフィドルがあります
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"]]