gpt4 book ai didi

javascript - 从JS中的数组中查找所有组合序列

转载 作者:行者123 更新时间:2023-11-29 21:15:23 25 4
gpt4 key购买 nike

免责声明:我知道这个问题的一部分以前曾在这里被问过和回答过,是的,到目前为止,他们帮助我达到了这一点。

假设我有一个包含 2 个元素的数组,我想找到可以由这些元素组成的所有可能组合。集合的顺序无关紧要。

var myArr = ['a','b'];

想要的结果

var result = [ [a], [a,b], [b], [b,a] ]

起初我以为我在寻找一个幂集,但我不想要一个 null 集,我想处理 [a,b] [b,a] 作为唯一序列而不是相等。关于集合、空集和相等集的更多信息 here .

到目前为止,我已经编写了这个函数,它将递归循环遍历我的数组,为每个可能的组合创建新数组并将它们放入结果数组。

function getCombinations() {

var myArr = ['a','b'],
result = [];

var recurFn = function(prefix, myArr) {

for (var i = 0; i < myArr.length; i++) {

var newArray = prefix !== '' ? [prefix, myArr[i]] : [myArr[i]];
result.push(newArray);
recurFn(prefix + myArr[i], myArr.slice(i + 1));
}
}

recurFn('', myArr);
console.log(result); //[[a], [a,b], [b]]

}

这是一个fiddle用我上面的代码。

目前我只返回 3 种可能的组合 [a]、[a,b]、[b],如何编辑我的代码以便返回 [a], [a,b], [b], [b,a].

谢谢!

最佳答案

你能以相反的顺序制作两个数组吗:

var myArr = ['a','b']
var myArr2 = ['b','a']

var recurFn = function(prefix, myArr) {

for (var i = 0; i < myArr.length; i++) {

var newArray = prefix !== '' ? [prefix, myArr[i]] : [myArr[i]];
result.push(newArray);
recurFn(prefix + myArr[i], myArr.slice(i + 1));
}
for (var i = 0; i < myArr2.length; i++) {

var newArray2 = prefix !== '' ? [prefix, myArr2[i]] : [myArr2[i]];
result.push(newArray2);
recurFn(prefix + myArr2[i], myArr2.slice(i + 1));
}
newArray.concat(newArray2);
newArray.unique();

}

关于javascript - 从JS中的数组中查找所有组合序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com