【问题标题】:how to prevent the else block to get run if "if block" works in loops [closed]如果“if块”在循环中工作,如何防止else块运行[关闭]
【发布时间】:2020-03-24 15:58:37
【问题描述】:

我有一个这样的代码块

但我不知道如何防止“if block”工作时发生“else block”, 这是运行时控制台的图片

【问题讨论】:

  • 这与 C# 或 C++ 有什么关系?
  • 将问题中的代码作为text并选择一个语言标签。
  • else 块不会在 if 块运行的相同情况下运行。我认为您要做的是搜索某个项目是否在集合中,但是会发生的是您遍历集合中的每个项目并将其与commodityModelInId 进行比较。当项目匹配时你会得到if 块,当它不匹配时你会得到else 块。

标签: javascript c# node.js


【解决方案1】:

我假设您想遍历迭代列表中的每个项目,如果它与库存列表中的某些内容匹配,则执行某些操作。您的循环正在查看迭代列表中的每个项目和库存列表中的每个项目并比较它们。这意味着迭代列表中的每个项目都将获得库存列表中每个项目的控制台日志。

不是遍历两个列表,而是遍历第一个列表,然后在第二个列表中搜索任何匹配项。如果找到了,请执行您的操作 (console.log)。

这是在 C# 中,但它可能会有所帮助。

listToIterate.ForEach(elementToIterate =>
{
  var id = elementToIterate;
  if(listInStock.Any(elementInStock => elementInStock == id))
  {
    Console.WriteLine("Exists");
  }
  else
  {
     Console.WriteLine("Not Exists");
  }
});

【讨论】:

    【解决方案2】:

    如果 if 语句的条件为真,代码将永远不会进入 else 语句。请记住,您正在循环运行代码;您看到的日志消息均来自循环中的不同迭代。这可以从你打印出来的对象的id每次迭代都不一样的事实中看出。

    【讨论】:

    • 那么如何比较外循环和内循环呢?
    • 如果你只想找到匹配id的对象,你不需要else
    • 那是不一样的,每一个备选的id都是一样的
    • 在 else 块中将运行另一个逻辑,它只是一个简单的 console.log 但如果 'if bock' 不起作用,则 else 块将运行
    • 是的,它将为每个不满足条件的对象运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多