javascript中所有可能的组合-为什么是pop()?
我试图理解我在网上遇到的这个函数,它返回字符串的所有可能组合——为什么nextleter.pop需要pop()调用?我试着在控制台中调试这个,但不清楚pop到底做了什么 结果为nextLetter.pop()-->['bac','bca','cba','cab','acb','abc'] 没有nextLetter.pop()的结果-->['bac', “巴卡”, “巴卡巴”, “巴卡巴布”, "baccacbacbab",, “Baccacababacbbc”]javascript中所有可能的组合-为什么是pop()?,javascript,algorithm,recursion,Javascript,Algorithm,Recursion,我试图理解我在网上遇到的这个函数,它返回字符串的所有可能组合——为什么nextleter.pop需要pop()调用?我试着在控制台中调试这个,但不清楚pop到底做了什么 结果为nextLetter.pop()-->['bac','bca','cba','cab','acb','abc'] 没有nextLetter.pop()的结果-->['bac', “巴卡”, “巴卡巴”, “巴卡巴布”, "baccacbacbab",, “Baccacababacbbc”] function stringP
function stringPermutations(str) {
var permutations = [];
var nextLetter = [];
var chars = str.split('');
permutateInner(chars);
function permutateInner(chars) {
if (chars.length === 0) {
permutations.push(nextLetter.join(''));
}
for (var i = 0; i < chars.length; i++) {
chars.push(chars.shift());
nextLetter.push(chars[0]);
permutateInner(chars.slice(1));
//what is this doing?
nextLetter.pop();
}
}
return permutations;
}
console.log(stringPermutations('abc'));
函数字符串置换(str){
var置换=[];
var nextLetter=[];
var chars=str.split(“”);
permutateInner(chars);
函数置换器(字符){
如果(字符长度===0){
置换推(nextleter.join(“”));
}
对于(变量i=0;i
从顶部开始,很明显,nextLetter
是一个数组
——因此我首先要看的是
正如文档所述,.pop()
方法从数组中删除最后一个元素并返回它——在示例代码中,没有使用返回值,因此很明显,删除最后一个元素的副作用是有用的
对数组子集进行递归[1..n]
。它还包括对当前阵列的每个子阵列进行排列
e、 g.当当前第一个字母为b
时,递归包括置换ac
和ca
。当当前第一个字母是a
时,递归包括排列cb
和bc
关键是要将它放在那里,否则只能得到结果['abc'、'bca'、'cba']javascripts数组
pop
方法仅从数组中删除最后一个元素,并返回该元素。我了解pop本身的功能,但不了解它在for循环内递归上下文中的功能