Javascript - 生成单个数组中元素的所有组合(成对)
所以我已经看到了这个问题,也看到了它的一些答案,但我想知道是否有可能获得所有组合,即使它在每个可能的顺序中都是重复的。
ex.
var array = ["apple", "banana", "lemon", "mango"];
output
var result = [
"apple"
"apple banana"
"apple banana lemon"
"apple banana lemon mango"
"apple lemon"
"apple lemon banana mango"
"apple lemon mango banana"
"apple mango"
"apple mango lemon banana"
"apple mango banana lemon"
"banana"
"banana apple"
"banana apple lemon"
"banana apple mango"
"banana lemon"
"banana lemon apple"
"banana lemon apple mango"
"banana mango"
...
];
最后,我本质上想要所有可能的组合,无论是每个可能的顺序中的 1 个项目、成对的项目还是多个项目。
我见过的最接近的答案是这组代码。
function getCombinations(valuesArray: String[])
{
var combi = [];
var temp = [];
var slent = Math.pow(2, valuesArray.length);
for (var i = 0; i < slent; i++)
{
temp = [];
for (var j = 0; j < valuesArray.length; j++)
{
if ((i & Math.pow(2, j)))
{
temp.push(valuesArray[j]);
}
}
if (temp.length > 0)
{
combi.push(temp);
}
}
combi.sort((a, b) => a.length - b.length);
console.log(combi.join("\n"));
return combi;
}
let results = getCombinations(['apple', 'banana', 'lemon', ',mango']);
![enter image description here](https://i.stack.imgur.com/W8b2N.png)