像调用break一样短路Array.forEach

2024-03-20

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

我怎样才能使用新的来做到这一点forEachJavaScript 中的方法?我试过了return;, return false; and break. break崩溃和return除了继续迭代之外什么也不做。


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

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在里面。

Use Array#some https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/some

相反,使用Array#some https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/some:

[1, 2, 3].some(function(el) {
  console.log(el);
  return el === 2;
});

这有效是因为some回报true一旦按数组顺序执行的任何回调返回true,短路其余部分的执行。

some,其倒数every https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/every(这将停止在return false), and forEach都是 ECMAScript 第五版方法,需要添加到Array.prototype在缺少它们的浏览器上。

Use Array#every https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/every

[1, 2, 3].every(v => {
  if (v > 2) {
    return false // "break"
  }
  console.log(v);
  return true // must return true if doesn't break
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

像调用break一样短路Array.forEach 的相关文章

  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 在多个按钮中调用相同的 jQuery 函数

    我对 jQuery 不太熟悉 我下载了这段代码来创建淡入 淡出弹出表单 这是代码
  • Push不是数组人口的函数

    我想要一个结构如下的数组 var myMap id 0 1 name Op Op2 Now Op and Op2被采取 each像这样 var myMap var count 0 each GlobalVariables available
  • 三个 JS Orbitcontrols 设置目标而不用 LookAt

    我正在尝试制作一个用于构建模型的 3D 查看器 我们已加载模型并尝试与模型进行某种交互 因此 我们使用 OrbiControls 来旋转 平移和缩放模型 我们希望在查看器中具有这样的行为 当用户单击并拖动 从而旋转 时 旋转中心位于用户单击
  • 无法读取未定义的属性“搜索”

    我正在尝试制作一个使用 YouTube API 的脚本 我输入了一个关键字 youtube api 找到视频 gt 脚本获取第一个结果并返回 VideoID 现在我的问题是 当我按下提交按钮时 搜索功能不会被触发 有谁知道这可能是什么原因
  • 无法在适当的时间对域调用 dispose

    我有一个问题domain模块 目前 我正在尝试捕获请求中引发的任何未捕获的错误 使用express中间件和域 所有请求在调用之前都会通过此函数路由next并继续走正确的路线 app use req res next gt domain cr
  • 解析 ISO 8601 日期字符串时如何假定本地时区?

    我有一个 ISO 日期字符串 如下所示 var startTimeISOString 2013 03 10T02 00 00Z 当我使用下面的代码将其转换为 JavaScript 中的日期对象时 它返回 var startTimeDate
  • 如何正确使用react-router-dom中的useHistory()?

    如何使用useHistory 正确吗 我无法从一个反应组件过渡到另一个反应组件 根据 React 文档以及 Stack Overflow 上的说明 我无法从 App js 转换到 MyComponent js 例如 我正在尝试 App js
  • 如何使用 javascript 检测触摸设备浏览器与桌面浏览器?

    使用 userAgent match 检测触摸设备 智能手机和平板电脑 与台式机浏览器并返回布尔变量 例如 isipad 的代码是什么 我需要主要针对 Android 和 Apple 设备进行测试 如果设备浏览器是Android或Apple
  • SVG 查找路径的旋转角度

    我的 SVG 地图有问题 我使用 jVectorMap 创建自定义地图 我需要在字段中心写入每个字段的名称 例子是 JSFiddle 示例 http jsfiddle net mmogn90q 1 放大右侧查看文字 我可以用这个函数找到每个
  • 如何比较jquery中的两个元素[重复]

    这个问题在这里已经有答案了 var a start gt div last child var b start gt div live 0 alert a b alert a b 它总是假的 如何在 jQuery 中比较两个元素 thank

随机推荐