所以我正在尝试编写一个程序来查找单词中所有可能的字母排列(顺序)作为我的代数老师的笑话。这是我在类之间编写的,但是当我运行它时(在NodeJS中,但它非常香草JS所以平台应该无关紧要)我得到了
TypeError: Cannot call method 'forEach' of undefined
在
letters.forEach(function (str) {
代码:
var name = ['w', 't', 'f', 'a', 'r', 'e', 'm', 'y', 'i', 'n', 'i', 't', 'i', 'a', 'l', 's'];
var permutations = [];
function add_letter(letter, letters) {
var full = [];
letters.forEach(function (str) {
full.push(letter + str);
});
return full;
}
function generate_permutation(letters) {
for (i=0; i<letters.length; i++) {
return add_letter(letters[i], generate_permutation(letters.slice(1, letters.length)));
}
}
permutations = generate_permutation(name);
console.log(permutations);
(我在JS中决定使用它的唯一原因是我需要在Node中练习,因为我将很快开始一个相当大的项目)
谢谢!
答案 0 :(得分:0)
在generata_permutations上,你正在对generate_permutation(letters.slice(1,letters.length))进行递归调用,这将返回undefined。因为当你尝试迭代字母时,这是add_letter(字母)的第二个参数,你会得到错误。
查看此link,您可以在其中找到一个很好的排列实现。希望它有所帮助。