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