Javascript:回文函数?

Javascript: palindrome function?

我有一个简单的单词翻转器的工作代码:

var strFlip = function(str) {
    return str.split(" ").map(function(word) {
        return word.split("").reverse().join("");
    }).join(" ");    
};

console.log(strFlip("This is designed to swap the letter order of each word in the string"));

// "sihT si dengised ot paws eht rettel redro fo hcae drow ni eht gnirts"

我想添加一个 if/else 以允许此代码现在识别字符串中的每个单词是否为回文(正向和反向拼写相同,例如:hannah)。

所以我尝试继续使用 .map() 逻辑:

var strFlip = function(str) {
  return str.split(" ").map(function(word) {
    return word.split("").reverse().join("");
      }).join(" ").toLowerCase().map(function(test) {
    if (test.split(" ") === word){
      return true;
    }else{
      return false;
    }
  }
   );
};

console.log(strFlip("Hannah loves her racecar"));

但是....不出所料,它 returns 本质上是一个错误,表明 if 部分之前的长链接函数集合本身不是函数:

TypeError: str.split(...).map(...).join(...).toLowerCase(...).map is not a function

我在尝试匹配所有花括号时也迷路了,但我想我已经全部找到了。

那么,是否可以在其中添加if/else?

.join(" ").toLowerCase() returns 字符串,不是数组。错误表明 'some string'.map 不是函数,因为它是 undefined.

如果您想要的是一个数组,指示索引处的单词是否为回文,那么...

var sentence = 'Eve drives a racecar',
        words = sentence.split(" ").map(function(word) {
                    var isPalindrome = word.length > 1 && (word.toLowerCase() === word.toLowerCase().split("").reverse().join(""));
                    return { text: word, isPalindrome: isPalindrome };
                });
    alert(JSON.stringify(words));