我确定已经在某个地方得到了解答,但我无法为纯JS找到这个特定问题的答案。
我需要一个像这样的函数:
function testAllPossibilities(array, callback) {
//example array = [Obj1,Obj2];
//allPossibilites = [[Obj1],[Obj2],[Obj1,Obj2],[Obj2,Obj1]]
for (var i = 0; i < allPossibilites.length; i++) {
callback(allPossibilites[i]);
}
}
我不知道如何制作allPossibilities
变量,而且我也不太了解所有这些数学术语,例如&#34;排列&#34;等等,以准确定义这个问题...这可能是我到目前为止找不到答案的原因。
allPossibilities
的更多字词:
每个不同的顺序应该有可能,并且长度应该在1和数组的长度之间,但不能重复相同的元素。
答案 0 :(得分:1)
function combinate (array) {
const possibilities = new Set();
function lookup (possible) {
if possible.length {
possibilities.add(possible);
}
const p = new Set(possible);
const further = array.filter(el => !p.has(el));
for (let entry of further) {
lookup(possible.concat(entry));
}
}
lookup([]);
return Array.from(possibilities);
}
不要使用超过8个元素运行它。