1
我使用@Bergi發佈的這個函數。它完美地完成任務。但我想傳入一個數組變量,這是不起作用的時候。因此,而不是:將數組變量傳遞給一個函數,用y變量生成x個數組的所有組合
cartesian([0,1], [0,1,2,3], [0,1,2]);
此相反:
var array =[[0,1], [0,1,2,3], [0,1,2]];
cartesian(array);
function cartesian() {
var r = [], arg = arguments, max = arg.length-1;
function helper(arr, i) {
for (var j=0, l=arg[i].length; j<l; j++) {
var a = arr.slice(0); // clone arr
a.push(arg[i][j]);
if (i==max)
r.push(a);
else
helper(a, i+1);
}
}
helper([], 0);
return r;
}
cartesian([0,1], [0,1,2,3], [0,1,2]);
我真的想與對象的數組來做到這一點,我想,也找來這是它一樣的結果返回了原來的三個數組。我需要這樣做,因爲我將傳遞任何數量的任何長度的數組。
完美。謝謝! – BoomerAndZiggy