Javascript回文检查单词,看它是否是回文

时间:2017-05-02 17:31:11

标签: javascript

我试图确定一个单词是否是回文。回文是一个向前和向后拼写相同的单词。我希望我的代码能够访问console.log,但我收到的错误是:返回语句后无法访问的代码。

错误开始的行是:isWordAPalindrome('word');



isWordAPalindrome('word');

function isWordAPalindrome(word) {
  var word = "sherpa,stewie,anna,lil squiggle, racecar, tacocat"
  str[0];
  str.length
  console.log(); {
    if (str.length = 0) {
      return true;
    }
    if (str[0] != str[str.length - 1]) {
      return false;
    }
    return isWordAPalindrome(str.slice(1, str.length - 1));
    isWordAPalindrome('word');
    console.log('sherpa');
    console.log('stewie');
    console.log('anna');
    console.log('lil squiggle');
    console.log('racecar');
    console.log('tacocat');
  }
  console.log(''); //simply making a newline for easier console reading
  console.log('The word provided is: ', word);
  isWordAPalindrome('sherpa');
  console.log('sherpa is not a palindrome');
  isWordAPalindrome('stewie');
  console.log('stewie is not a palindrome');
  isWordAPalindrome('anna');
  console.log('anna is a palindrome');
  isWordAPalindrome('lil squiggle');
  console.log('lil squiggle is not a palindrome');
  isWordAPalindrome('racecar');
  console.log('racecar is a palindrome');
  isWordAPalindrome('tacocat');
  console.log('tacocat is a palindrome');
}




5 个答案:

答案 0 :(得分:2)

不同的方法:



const word = "sherpa,stewie,anna,lil squiggle, A butt tuba, racecar, tacocat";

const a = word.split(',').map(s => s.toLowerCase().replace(/\s+/g, ""));

const isP = s => s === s.split('').reverse().join('');

for (let w of a) {
	console.log(`${w}: ${isP(w)}`)
}




答案 1 :(得分:1)

你有一个return语句,它停止代码执行并从函数返回。 这就是你想要实现的目标

function checkPalindrome(word) {
  for (var i = 0, j = word.length -1; i++, j--; i < word.length, j >= 0, i < j) {
    if (word.charAt(i) !== word.charAt(j)) {
      return false;
    } 
  }
  return true;
}

console.log(checkPalindrome('sherpa'));
console.log(checkPalindrome('anna'));

答案 2 :(得分:0)

在返回之后的isWordAPalindrom方法中有代码:

return isWordAPalindrome(str.slice(1,str.length-1));
//unreachable
isWordAPalindrome('word');
console.log('sherpa');
console.log('stewie');
...

该代码无法访问

答案 3 :(得分:0)

当您执行返回时,您正在执行该功能的“离开”。

返回后的代码无法执行,这是错误对你说的。

如果你想在return语句之前做一些事情,那就把它放在前面。

 isWordAPalindrome('word');
        console.log('sherpa');
        console.log('stewie');
        console.log('anna');
        console.log('lil squiggle');
        console.log('racecar');
        console.log('tacocat');
        return isWordAPalindrome(str.slice(1, str.length - 1));

答案 4 :(得分:0)

你的递归程序很好。您只需要知道从哪里开始并结束标签和大括号。

此外,您正在为0分配值str.length,而不是评估它是否相等(=== 或至少 {{1 }})。

此外,您可以在打印日志消息之前评估该单词是否为回文。

==
var words = "sherpa, stewie, anna, lil squiggle, racecar, tacocat".split(/,\s*/);

words.forEach(word => {
  var isPalindrome = isWordAPalindrome(word);
  console.log(`${word} is ${!isPalindrome ? 'not ' : ''}a palindrome`);
});

function isWordAPalindrome(str) {
  if (str.length === 0) {
    return true;
  }
  if (str[0] != str[str.length - 1]) {
    return false;
  }
  return isWordAPalindrome(str.slice(1, str.length - 1));
}

输出

.as-console-wrapper { top: 0; max-height: 100% !important; }