lettersArr
- это не то, что вы ожидаете.
Вы разделяете входную строку пробелами, что означает, что вы получаете ['taco', 'cat']
, а не ['t', 'a', 'c', 'o', 'c', 'a', 't']
.
Затем, когда эта строка запускается:
if (validCharacters.indexOf(char)> - 1) lettersArr.push(char);
char
это 'taco'
, которого нет в validCharacters
, поэтому ничего не помещается в lettersArr
.
И поскольку lettersArr
пуст :
lettersArr.join(' ') === lettersArr.reverse().join(' ');
превращается в:
[].join(' ') === [].reverse().join(' ')
Что, конечно, всегда верно.
Чтобы исправить это, вы просто хотите разделить строку пустой строкой, что даст вам массив строк из одного символа.
function isPalindrome(string){
string = string.toLowerCase();
var charactersArr = string.split('');
var validCharacters = 'abcdefghijklmnopqrstuvwxyz'.split('');
var lettersArr = [];
charactersArr.forEach(char => {
if (validCharacters.indexOf(char)> - 1) lettersArr.push(char);
});
return lettersArr.join(' ') === lettersArr.reverse().join(' ');
}
console.log("Taco Cat", isPalindrome("Taco Cat"));
console.log("abc", isPalindrome("abc"));