在JavaScript中,我想不出代码来从n个数组(其中m个元素)中生成组合的代码。对于其他语言,我也曾见过类似的问题,但答案包含了我不确定如何翻译的语法或库魔术。
考虑以下数据:
[[0,1], [0,1,2,3], [0,1,2]]
3个数组,其中包含不同数量的元素。我想做的是通过组合每个数组中的一项来获得所有组合。
例如:
0,0,0 // item 0 from array 0, item 0 from array 1, item 0 from array 2
0,0,1
0,0,2
0,1,0
0,1,1
0,1,2
0,2,0
0,2,1
0,2,2
等等。
如果数组的数目是固定的,则很容易进行硬编码实现。但是数组的数量可能会有所不同:
[[0,1], [0,1]]
[[0,1,3,4], [0,1], [0], [0,1]]
任何帮助将非常感激。
这是使用递归辅助函数的一个非常简单而简短的代码:
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]);
要使函数采用数组数组,只需将签名更改为,functioncartesian(arg)
从而将arg
其作为参数而不是allarguments
。
如果数组的数量是固定的,那么就很容易实现硬编码。但是数组的数量可能会有所不同: 任何帮助都将不胜感激。
本文向大家介绍JavaScript函数采用数字n并生成前n个素数的数组,包括了JavaScript函数采用数字n并生成前n个素数的数组的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受数字n,并返回包含前n个质数的数组。我们知道素数是只能被1整除的数,例如2、3、19、37、73等。 我们将首先编写一个检查给定数是否为质数的函数,然后运行循环以生成n个质
我想从数组创建所有可能的数组可能大于或小于。输出数组中的元素不必是唯一的。 例如: 根据这个数组 给定所需大小的函数,应返回: 例2 根据这个数组 给定所需大小的函数,应返回: 用Swift怎么做?
我想在java中创建一个方法,该方法接收两个字符串列表:
问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出:
我有一个类似 我试图使所有元素联合元素,但同一子数组中的元素不得复制。 这将根据第一个子数组中的元素数进行添加。我试过了,但找不到任何解决办法。有人能帮忙吗? 这是我试过的代码: 提前感谢。!