Javascript Palindrome功能逻辑写得正确吗?

时间:2018-02-24 04:36:35

标签: javascript function

我是编程新手所以请耐心等待。我目前正致力于函数逻辑。我正在尝试编写一个函数来查看传递的字符串是否是回文(真或假)。

这是我的代码,

function palindrome(word){
  if(word === word.reverse())
    return true;
 } else {
    return false;
 };

 palindrome("ohho");

当我在Google Inspect Element控制台上运行此功能时。我收到Uncaught SyntaxError: Unexpected token else关于} else {的语法错误,我有几个问题,

  1. 我的代码中的逻辑是否正确?
  2. 另外,为什么我会收到语法错误?
  3. 谢谢!

2 个答案:

答案 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()