【问题标题】:function doesn't loop through all index of array [duplicate]函数不会遍历数组的所有索引[重复]
【发布时间】:2021-10-03 01:57:27
【问题描述】:

我正在尝试解决查找单词是否为保留关键字的问题。不幸的是,我坚持下去。 调试它表明循环没有增加,但我不知道为什么?此外,看起来只有第 0 个索引与 strLowerCase 进行比较。为什么会这样?我很困惑。

问题陈述: 一种编程语言具有以下不能用作标识符的关键字: break、case、continue、default、defer、else、for、func、goto、if、map、range、return、struct、type、var

编写一个程序来判断给定的单词是否是关键字

function wordIsTheKey(str) {
  let strLowerCase = str.toLowerCase();
  const keywords = [
    "break",
    "case",
    "continue",
    "default",
    "defer",
    "else",
    "for",
    "func",
    "goto",
    "if",
    "map",
    "range",
    "return",
    "struct",
    "type",
    "var",
  ];

  keywordsLength = keywords.length;

  for (let i = 0; i < keywordsLength; i++) {
    if (keywords[i] == strLowerCase) {
      return `${str} is a keyword`;
    } else {
      return `${str} is not a keyword`;
    }
  }
}

console.log(wordIsTheKey("defer"));
console.log(wordIsTheKey("While"));

【问题讨论】:

  • 你正在使用return打破循环。
  • 只是一个快捷方式keywords.includes(strLowerCase)

标签: javascript arrays


【解决方案1】:

将 if-else 与 returns 一起使用将在数组中的第一项之后中断循环。在 for 循环中,您应该仅在找到关键字时返回。如果您检查了每一项,则可以返回 str 不是循环外的关键字。

function wordIsTheKey(str) {
  let strLowerCase = str.toLowerCase();
  const keywords = [
    "break",
    "case",
    "continue",
    "default",
    "defer",
    "else",
    "for",
    "func",
    "goto",
    "if",
    "map",
    "range",
    "return",
    "struct",
    "type",
    "var",
  ];

  keywordsLength = keywords.length;

  for (let i = 0; i < keywordsLength; i++) {
    if (keywords[i] == strLowerCase) {
      return `${str} is a keyword`;
    }
  }
  return `${str} is not a keyword`
}

console.log(wordIsTheKey("defer"));
console.log(wordIsTheKey("While"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多