当前位置: 首页 > 面试题库 >

JavaScript短路Array.forEach就像调用break

万俟飞语
2023-03-14
问题内容

[1,2,3].forEach(function(el) {
if(el === 1) break;
});

如何使用forEachJavaScript中的新方法执行此操作?我试过return;return false;breakbreak崩溃,return除了继续迭代外什么也不做。


问题答案:

有没有内置的能力breakforEach。要中断执行,您将必须抛出某种异常。例如。

var BreakException = {};



try {

  [1, 2, 3].forEach(function(el) {

    console.log(el);

    if (el === 2) throw BreakException;

  });

} catch (e) {

  if (e !== BreakException) throw e;

}

JavaScript异常不是很漂亮。for如果您确实需要传统循环,则传统循环可能更合适break

使用

Array#some

而是使用Array#some

[1, 2, 3].some(function(el) {

  console.log(el);

  return el === 2;

});

之所以some可行,true是因为只要按数组顺序执行任何回调,就返回return true,从而使其余部分的执行短路。

some,它的反函数every(将在上停止return false),以及forEach所有ECMAScript Fifth
Edition方法,都需要将它们添加到Array.prototype缺少它们的浏览器中。



 类似资料:
  • 问题内容: 我想知道JavaScript是否具有C#中的&&运算符之类的“短路”评估。如果没有,我想知道是否有一种合理的解决方法可以采用。 问题答案: 是的,JavaScript具有“短路”评估。

  • 本文向大家介绍Javascript中的最短路径算法,包括了Javascript中的最短路径算法的使用技巧和注意事项,需要的朋友参考一下 在图论中,最短路径问题是在图中的两个顶点(或节点)之间找到路径的问题,以使其构成边的权重之和最小。在这里,我们需要修改添加边缘并添加有向方法,以允许向边缘添加权重。  让我们看看如何添加它- 示例 现在,当在图上添加一条边时,如果我们不指定权重,则会为该边分配默认

  • 嗨,我有一个try catch块,在这个我需要打印调用堆栈,当我有一个IOException时。我想,那只是e.printStackTrace(),但我不太确定,因为这个,我想在这里问一下。

  • 所以Firebase具有离线功能。 因此,每当我发送任何文本消息时,只要我单击“发送”,它就会显示在我的设备上。它就像一个符咒。 我的问题是,当我尝试发送图像时,情况不一样。即使我在线,图像也会首先上传到Firebase存储。然后图像url将被存储到firebase数据库中。在那之后,它被展示给我看。这需要时间,具体取决于文件大小。我一发送图像并在后台上传,是否就可以在设备上显示图像? 我有一个适

  • 当使用if, elsif, until或者使用and或or运算符测试条件while使用短路评估。 例如 - if a < 0 and b > 0 then -- block of code end if 如果<0为假,那么Euphoria并不打算测试b是否大于0.它知道总体结果是假的,无论如何。 同样 - if a < 0 or b > 0 then -- block of code

  • 问题内容: 我想遍历一些DOM元素,我正在这样做: 但我得到一个错误: document.getElementsByClassName(“ myclass”)。forEach不是函数 我使用的是Firefox 3,所以我知道这两个和都存在。这工作正常: 是数组的结果吗?如果没有,那是什么? 问题答案: 不需要。如DOM4中所指定,它是一个(至少在现代浏览器中。较旧的浏览器返回)。 在所有现代浏览器