实现带有三个参数的函数的最佳方法是什么?>
并返回长度为l(arg1 <= l <= arg2
)的所有组合。 E.g
getComb (2, 2, [1, 2, 3]) === [[1,2], [2,3], [3,1]] getComb (0, 3, [1, 2, 3]) === [[],[1],[2],[3],[1,2],[2,3],[3,1],[1,2,3]]
([
===
在这里被定义为深度相等,不考虑顺序(数组的两个深度几乎都设置相等)。另外,应忽略重复的值(例如,对于所有a,getComb(a, b, [x,x,y]) === getComb(a, b, [x,y])
,b,x,y)
然后可以获取所有组合的fn:
getAllComb = arr => getComb (0, arr.length, arr)
谢谢!
实现函数的最佳方法是采用三个参数的最小组合长度的最大组合值数组的最大长度并返回长度为l的所有组合(arg1&...
实现getComb的一种方法是:
[1,2,3].reduce( (acc, v, i, original) =>
acc.concat(original.slice(i+1).map( w => [w, v] )),
[]);
这是另一种递归解决方案,其结构与Nina Scholz的回答略有不同。它具有从列表中精确选择n
元素,然后在主函数中使用该函数的功能,该函数针对从min
到max
的每个值进行调用:
您可以采用递归方法。
好吧,我有部分解决方案(针对a = 1, b = arr.length
:]
这是我引以为傲的解决方案:)有很多东西,但大多数都是样板