【问题标题】:Why is the for loop function returning the else-code instead of entering the if-true-code?为什么 for 循环函数返回 else-code 而不是输入 if-true-code?
【发布时间】:2020-12-17 01:58:54
【问题描述】:

我创建了一个 for 循环以从对象数组中返回某个“intentname”变量(参见下面的代码 sn-p 1)。想要的结果是它返回第二个对象(其中 nodename1 === "Frage")。不幸的是,它返回 else 语句,即 ""(参见下面的代码 sn-p 2)。

代码 sn-p 1:这是我的对象数组:

0: {intentname: "projects/myteachingbot-arxmxd/agent/intents/a0a95fa7-a676-417e-b121-23f988cc492c", nodename1: "Startpunkt"}
1: {intentname: "projects/myteachingbot-arxmxd/agent/intents/89eca4bc-272f-4080-b7b1-9b8e76188826", nodename1: "Frage"}
2: {intentname: "projects/myteachingbot-arxmxd/agent/intents/34e621de-e110-4afb-80e0-1226605b2430", nodename1: "Feedback"}
3: {intentname: "projects/myteachingbot-arxmxd/agent/intents/eeb12d03-d763-4547-a5aa-b8a3f1d1a944", nodename1: "Tipp"}
4: {intentname: "projects/myteachingbot-arxmxd/agent/intents/b667fae9-d059-40d7-a832-c7e617a1fa80", nodename1: "Frage"}
5: {intentname: "projects/myteachingbot-arxmxd/agent/intents/a0a95fa7-a676-417e-b121-23f988cc492c", nodename1: "Startpunkt"}

代码 sn-p 2:这是带有 for 循环的 intentname() 函数:

 const intentname = () => {
          for (let i = 0; i < intent.length; i++) {
            console.log(intent[0]);
            console.log(intent[i].nodename1);
            if (intent[0] != undefined && intent[i].nodename1 === "Frage") {
              const intentname3 = intent[i].intentname;
              console.log(intent[i].intentname);
              return intentname3;
            } else {
              return "";
            }
          }
        };

【问题讨论】:

  • 浏览你的脚本。第一个元素不满足条件,因此它将在 else 分支中结束。那里有一个return,它将停止函数的执行并“返回”一个值。将return "" 移到for 循环之后并删除else 分支。
  • return 语句结束函数执行并指定要返回给函数调用者的值。”
  • 完美的解释,现在它就像一个魅力:)。谢谢@Andreas

标签: javascript arrays for-loop while-loop


【解决方案1】:

您的 for 循环没有多次运行,因为您使用的是 return。它在运行第一次迭代或通过intent[0]检查后从函数返回

像这样重构你的代码

const intentname = () =>{
 for (let i = 0; i < intent.length; i++) {
    if (intent[0] != undefined && intent[i].nodename1 === "Frage") {
      const intentname3 = intent[i].intentname;
      console.log(intent[i].intentname);
      return intentname3;
    }
  }
  return "";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2015-12-21
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多