【发布时间】:2016-02-08 02:39:32
【问题描述】:
我试图理解我在网上遇到的这个函数,它返回一个字符串的所有可能组合——为什么 nextLetter.pop 需要 pop() 调用?我尝试在控制台中对此进行调试,但不清楚 pop 到底做了什么。
nextLetter.pop() 的结果 ---> [ 'bac', 'bca', 'cba', 'cab', 'acb', 'abc' ]
没有 nextLetter.pop() 的结果 --> [ 'bac', '浆果', '巴卡巴', 'baccacbaab', 'baccacbaabacb', 'baccacbaabacbbc']
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'));
【问题讨论】:
-
javascripts Arrays
pop方法只从数组中删除最后一个元素,并返回该元素
标签: javascript algorithm recursion