我有一个简单的单词翻板的工作代码:
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?
答案 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));