我是编程新手所以请耐心等待。我目前正致力于函数逻辑。我正在尝试编写一个函数来查看传递的字符串是否是回文(真或假)。
这是我的代码,
function palindrome(word){
if(word === word.reverse())
return true;
} else {
return false;
};
palindrome("ohho");
当我在Google Inspect Element控制台上运行此功能时。我收到Uncaught SyntaxError: Unexpected token else
关于} else {
的语法错误,我有几个问题,
谢谢!
答案 0 :(得分:6)
可以简化为:
function palindrome(word) {
return word === Array.from(word).reverse().join('')
}
console.log(palindrome("ohho"))
console.log(palindrome("ohno"))
更有效的方式:
function palindrome(word) {
var ln = word.length;
for (var i = 0; i <= ln/2;)
if (word[i++] !== word[ln-i]) return false;
return true
}
console.log(palindrome("ohho"))
console.log(palindrome("ohno"))
尝试自己处理大写,小写,空格和标点符号以检查“赛车”之类的短语。
答案 1 :(得分:2)
需要注意的一点是reverse
不是String类型下的方法。它仅适用于数组签出https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
您仍然可以通过String split方法将字符串值转换为数组来解决这个问题!
所以'ohho'.split('')
会导致以下["o", "h", "h", "o"]
您仍然可以撤消此数组。我宁愿把剩下的挑战留给你;)
已编辑:@jeremy在评论中指出,拆分可能会因unicode字符而失败
split(&#34;&#34;)不适合将字符串拆分为块。它在高阶Unicode字符上失败。 Array.from(..)正常工作
所以我建议Array.from('ohho')
使用split
。需要注意的一点是,除非你有polyfill,否则Array.from不会使用IE。
更多信息Array.from()