在我的代码中,我想循环遍历数组中的所有字符,并且对于每个可能的3个字符的组合,执行以下代码,然后重复直到它已达到所有可能的组合
我不知道从哪里开始,如果可以,请帮助
这是我的代码,谢谢
var link = 'http://www.roblox.com/UserCheck/DoesUsernameExist?username=';
var swap = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
//get all combinations of 3 objects in the swap array, for each do this:
$.get(link+(the combination of three objects here)).success(function(r) {
if (r['success'] == false) console.log(the combination of three objects here);
});
答案 0 :(得分:1)
您需要一个相当复杂且相对耗时的程序来实现它。没有内置功能可以为您执行此操作。我不会为你实现这个功能,因为它比我愿意花费更多的时间,这对你来说会很好,甚至很有趣。但这里有一些建议。
您需要实施决策树,以提出您想要的所有可能的组合或排列。 (如果你不知道组合和排列之间的区别,那么首先要查看它。)
接下来,研究决策树。决策树将是您的算法遵循的过程,以实现可能的组合。简而言之,它将生成许多三元素数组或三字符字符串。它将以“a”开头。然后它将分支并为每个可能跟随'a'的潜在元素创建一个以'a'开头的新数组或字符串。因此,一个决策分支将'b'作为第二个字符。另一个分支将'c'作为第二个字符,第三个字符将放置在'a'之后,等等。这些双字符分支中的每个分支(每个可能的一个)将依次关闭每个分支。每个人对第三个元素都有的选项。
这通常使用递归函数完成,但也可以是迭代函数。 (如果你不知道它们是什么意思,请查看它们。)如果你的原始数组中有30个元素,那么三个可能的排列数将是30 ^ 3;取决于你是否允许重复。
如果顺序无关紧要,那么组合就是你想要的,这将是一个更简单的实现,但仍然是一个相当复杂的算法。
希望这能为您提供足够的帮助来开始谷歌搜索。如果需要,请回来提出更具体的问题。
TL;没有编辑
答案 1 :(得分:0)
它需要做出P(36,3)= 42840个请求,这将花费大量时间。如果您仍想执行此操作,可以查找排列计算器,如in this question.
答案 2 :(得分:0)
你将使用三重嵌套来获取所有这些:
$.each( swap, function(index1, char1){
$.each( swap, function(index2, char2){
$.each( swap, function(index3, char3){
var combination = char1 + char2 + char3; // Will give you "aaa", then "aab", then "aac"...
// do stuff
});
});
})
然而,组合的总数是36 x 36 x 36,即46656.您不想同时进行多次ajax调用:)