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