函数不会遍历数组的所有索引[重复]

Posted

技术标签:

【中文标题】函数不会遍历数组的所有索引[重复]【英文标题】: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) 【参考方案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"));

【讨论】:

以上是关于函数不会遍历数组的所有索引[重复]的主要内容,如果未能解决你的问题,请参考以下文章

vue 数组遍历方法forEach和map的原理解析和实际应用

使用map方法Javascript遍历数组中的所有数组索引

js中 map 遍历数组

遍历数组的最后一个索引以外的所有索引

遍历数组以返回数组的名称

如何遍历类对象数组并在 JavaScript 中使用函数 [重复]