【问题标题】:Why do I get undefined? (JS)为什么我会不确定? (JS)
【发布时间】:2020-07-31 00:15:48
【问题描述】:

我正在编写代码以了解一个单词是否是回文。我认为我的代码是正确的,但我在“newStr”上未定义。就像控制台告诉我的那样:console.log(newStr) // undefinedracerar 我不明白为什么,我打赌为什么我的回报是“假的”,因为我认为代码是正确的。下面是我的代码。谢谢

function palindrome(str) {
  //   console.log(str);
  str = str.split(" ").join("").toLowerCase();
  //   console.log(str);
  //   console.log(str.length);

  let newStr = "";
  for (let i = str.length; i >= 0; i--) {
    newStr = newStr + str[i];
  }
  console.log(newStr);

  if (str === newStr) {
    return true;
  } else return false;
}

console.log(palindrome("rarecar"));

【问题讨论】:

  • 如果您请求一个长度为 10 的数组的 a[10] 会发生什么(请记住,长度为 10 的数组将包含从 a[0]a[9] 的元素)?

标签: javascript undefined palindrome


【解决方案1】:

正如其他人指出的那样,您的代码长度相差一倍,可以通过更改循环不变量的初始值来修复。

但我想指出,有一种更简单的方法可以解决这个问题。您可以简单地反转拆分字符串时获得的数组。这从一开始就避免了许多此类问题的发生,并导致代码更简单。

function palindrome(str) {
  return str === str.split("").reverse().join("");
}

console.log(palindrome("racecar")); // returns true
console.log(palindrome("rarecar")); // returns false

【讨论】:

    【解决方案2】:

    let i = str.length 应该是let i = str.length - 1

    这是str[str.length] 不是str 的索引,它比str 的最后一个索引高一个,因为索引从0 开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多