alert(newString);
newString
здесь не определено. Вместо этого вы должны использовать переданный аргумент:
alert(searchTerm);
Редактировать: Я не совсем уверен в вашем подходе. Это кажется слишком сложным. Это похоже на работу. Я понимаю, что ваш собственный код работает, но, возможно, это поможет вам в решении. Я не совсем понимаю вашу substr
часть.
http://jsfiddle.net/NUG2A/2/
var alphabet = "abc"; // shortened to save time
function permute(text) {
if(text.length === 3) { // if length is 3, combination is valid; alert
console.log(text); // or alert
} else {
var newalphabet = alphabet.split("").filter(function(v) {
return text.indexOf(v) === -1;
}); // construct a new alphabet of characters that are not used yet
// because each letter may only occur once in each combination
for(var i = 0; i < newalphabet.length; i++) {
permute(text + newalphabet[i]); // call permute with current text + new
// letter from filtered alphabet
}
}
}
permute("");
В результате будет вызвано следующее:
permute("");
permute("a");
permute("ab");
permute("abc"); // alert
permute("ac");
permute("acb"); // alert
permute("b");
// ...