Mau*_*lar 5 javascript combinations permutation
给定
[
["blue", "red"],
[1, 2],
[true, false],
]
Run Code Online (Sandbox Code Playgroud)
如何在javascript中获得可能的组合?:
blue, 1, true
blue, 1, false
blue, 2, true
blue, 2, false
red, 1, true
red, 1, false
red, 2, true
red, 2, false
Run Code Online (Sandbox Code Playgroud)
顺序无关紧要。
这非常复杂,而且很有趣,因此感谢您提出要求!
因为在这里我们可以拥有m个任意大小的元素数组,
var a = [
["blue", "red"],
[1, 2],
[true, false],
]
function allPossibleCombinations(items, isCombination=false){
// finding all possible combinations of the last 2 items
// remove those 2, add these combinations
// isCombination shows if the last element is itself part of the combination series
if(items.length == 1){
return items[0]
}
else if(items.length == 2){
var combinations = []
for (var i=0; i<items[1].length; i++){
for(var j=0; j<items[0].length; j++){
if(isCombination){
// clone array to not modify original array
var combination = items[1][i].slice();
combination.push(items[0][j]);
}
else{
var combination = [items[1][i], items[0][j]];
}
combinations.push(combination);
}
}
return combinations
}
else if(items.length > 2){
var last2 = items.slice(-2);
var butLast2 = items.slice(0, items.length - 2);
last2 = allPossibleCombinations(last2, isCombination);
butLast2.push(last2)
var combinations = butLast2;
return allPossibleCombinations(combinations, isCombination=true)
}
}
console.log(allPossibleCombinations(a));
console.log(allPossibleCombinations(a).length);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |