Javascript:回文函数?

时间:2015-07-29 19:12:30

标签: javascript function if-statement palindrome

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

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以允许此代码现在识别字符串中的每个单词是否为回文(拼写相同的向前和向后ex: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"));

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

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

我也迷失了尝试匹配所有花括号,但我想我得到了所有。

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

1 个答案:

答案 0 :(得分:2)

.join(" ").toLowerCase()返回一个字符串,而不是一个数组。该错误表明'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));