首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个很low的问题,forEach怎么跳出循环?

一个很low的问题,forEach怎么跳出循环?

作者头像
IMWeb前端团队
发布于 2019-12-04 14:29:17
发布于 2019-12-04 14:29:17
1.1K00
代码可运行
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队
运行总次数:0
代码可运行

方法一: try catch

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const _ = require('lodash');

let outArr = [];
try {
    arr.forEach(obj => {
        console.log(obj);
        if (obj < 3) {
            outArr.push(obj);
        } else {
            throw new Error('brack');
        }
    });
} catch (err) {
}

方法二:污染forEach

代码偷自https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/every

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

Array.prototype.forEach = function(fun /*, thisArg */)
  {
    'use strict';

    if (this === void 0 || this === null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== 'function')
        throw new TypeError();

    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
    for (var i = 0; i < len; i++)
    {
      if (i in t && fun.call(thisArg, t[i], i, t) === false)
        return false;
    }

    return true;
  };

let outArr = [];

arr.forEach(obj => {
    console.log(obj);
    if (obj < 3) {
        outArr.push(obj);
    } else {
        return false;
    }
});

方法三:用替代品

1:用lodash的_.forEach代替

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const _ = require('lodash');
let outArr = [];
_.forEach(arr, (index, obj) => {
    console.log(obj);
    if (obj < 3) {
        outArr.push(obj);
    } else {
        return false;
    }
});

2:用every代替

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let outArr = [];
arr.every((obj) => {
    console.log(obj);
    if (obj < 3) {
        outArr.push(obj);
    } else {
        return false;
    }

    return true;
});

3:用some代替

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let outArr = [];
arr.some((obj) => {
    console.log(obj);
    if (obj < 3) {
        outArr.push(obj);
    } else {
        return true;
    }
});

4:for代替

5:while代替

6:do while代替

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript中如何中断forEach循环
arr.forEach(callback[, thisArg]),callback会接收到三个参数:currentValue、index、array
meteoric
2018/11/20
3.1K0
Array对象的方法实现(3)----Array.prototype.filter和Array.prototype.find(实现常规参数的功能)
//filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
Rattenking
2021/01/29
5960
Js遍历数组总结
Array.prototype.forEach() arr.forEach(callback(currentValue [, index [, array]])[, thisArg]) callback 为数组中每个元素执行的函数,该函数接收一至三个参数 currentValue 数组中正在处理的当前元素 index 可选 数组中正在处理的当前元素的索引 array 可选 正在操作的数组 thisArg 可选 当执行回调函数callback时,用作this的值 注意如果使用箭头函数表达式来传入callback,thisArg参数会被忽略,因为箭头函数在词法上绑定了this值 注意如果想在遍历执行完之前结束遍历,那么forEach与map并不是好的选择
WindRunnerMax
2020/08/27
4.7K0
JavaScript 函数式编程—数组方法
闲逛的时候发现一个有趣的网站,ECMAScript 里面介绍了各种JS引擎和Node版本对JavaScript特性的支持,从ECMAScript5开始到未来2017将会有的特性。 ES5是JavaScript历史上最具革命的一个版本,开发者们开始摒弃对旧版本 IE 浏览器的支持,使用统一的风格编写JavaScript,并且新的ECMAScript规范也开始启动。目前几乎所有的浏览器环境和Node.JS环境都支持ES5。
李振
2021/11/26
8790
Vue进阶(幺零七):arr.forEach() 跳出循环
我们都知道for循环里要跳出整个循环是使用break,但在数组中用forEach循环如要退出整个循环呢?使用break会报错,使用return也不能跳出循环。
全栈程序员站长
2022/09/05
1.5K0
Array对象的方法实现(4)----Array.prototype.findIndex和Array.prototype.forEach(实现常规参数的功能)
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。 语法:arr.findIndex(callback[, thisArg]) 注意:1,有返回值(找到的第一个元素下标或者没找到的-1)。2,不改变原数组
Rattenking
2021/01/29
6580
最近面试经常被问到的js手写题
防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行
helloworld1024
2022/11/08
5720
JavaScript很简单?那你理解forEach对吗?
我们都知道,forEach() 方法对数组的每个元素执行一次给定的函数。它的语法也很简单:arr.forEach(callback(currentValue [, index [, array]])[, thisArg]):
Nealyang
2020/12/31
8030
JavaScript很简单?那你理解forEach对吗?
JavaScript 循环与异步
JS 中有多种方式实现循环:for; for in; for of; while; do while; forEach; map 等等。假如循环里面的内容是异步并且 await 的,那异步代码究竟是像 Promise.all一样将循环中的代码一起执行,还是每次等待上一次循环执行完毕再执行呢?
李振
2021/11/26
2.3K0
javascript前端:封装array的foreach方法
在日常工作中,会经常遍历数组,除了常用的for循环外,forEach应该也是最常用的
用户4831957
2019/10/11
9490
js常用方法和一些封装(1)1.字符串相关2.数组相关
博主在js上已经花费了很长时间,不禁深深地被其轻巧而强大的功能,以及优雅灵活的写法所折服,一直没找到机会来总结一下,最近发现了简书这个不错的平台,正好把学习的东西做一个汇总。 题外话 我始终认为,学习编程最好的方式就是去写,甭管写的怎样,也要去练习。 当初学完了数组,我记得自己是先把里面的每一个方法都敲了一遍,然后反复思考,通过这些方法,我能够做些什么? 很多语法我一开始也是很不理解的,然而在不断地运用过程中,慢慢地就开始明白过来了。只要抓住一个大方向,然后不断地练,就一定能深入理解! 正如国外一个有名的数
剽悍一小兔
2018/05/17
1K0
Js数组操作
JavaScript数组操作,主要包括Array对象原型方法以及常用操作如去重、扁平化、排序等。
WindRunnerMax
2020/08/27
17.8K0
前端面试复习计划,保熟~
实现:getBoundClientRect 的实现方式,监听 scroll 事件(建议给监听事件添加节流),图片加载完会从 img 标签组成的 DOM 列表中删除,最后所有的图片加载完毕后需要解绑监听事件。
loveX001
2022/12/07
1.3K0
js 中 forEach 如何跳出循环?
// 1.for方法跳出循环 function getItemByIdFor(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) { console.log("for循环 i", i); if (arr[i].id == id) { item = arr[i]; break; } } return ite
蓓蕾心晴
2022/11/22
9K0
2022我的前端面试总结
想要实现代理首先需要一个中间服务器,webpack中提供服务器的工具为webpack-dev-server
loveX001
2022/11/21
1.2K0
死磕 36 个 JS 手写题(搞懂后,提升真的大)
作为一个程序员,代码能力毋庸置疑是非常非常重要的,就像现在为什么大厂面试基本都问什么 API 怎么实现可见其重要性。我想说的是居然手写这么重要,那我们就必须掌握它,所以文章标题用了死磕,一点也不过分,也希望不被认为是标题党。
用户4456933
2021/06/01
1K0
44 个 JavaScript 变态题解析
当初笔者做这套题的时候不仅怀疑智商, 连人生都开始怀疑了…. 不过, 对于基础知识的理解是深入编程的前提. 让我们一起来看看这些变态题到底变态不变态吧! 第1题 ["1", "2", "3"].map(parseInt) 知识点: Array/map Number/parseInt JavaScript parseInt 首先, map接受两个参数, 一个回调函数 callback, 一个回调函数的this值 其中回调函数接受三个参数 currentValue, index, arrary; 而题目中, m
用户1667431
2018/04/18
9840
[第27 期]彻底分清Javascript forEach & map
JavaScript 中,数组的遍历我们肯定都不陌生,最常见的两个便是forEach 和 map。
皮小蛋
2020/03/02
5270
forEach相关的一个面试题
(今天给大家分享一道面试题) 面试题: 考察同步化执行的解决方案: fun([ ()=>console.log( 'start '), ()=>sleep(1000), ()=>console.log('1'), ()=>sleep( 2000), ()=>console.log( '2 '), ()=>sleep(3000), ()=>console.log( 'end ') ]) 实现 sleep 等待对应的毫秒数后,再执行下面的方法。 实现
用户9914333
2022/07/22
3390
2022秋招前端面试题(六)(附答案)
事件流是网页元素接收事件的顺序,"DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。
helloworld1024
2022/08/08
1.1K0
相关推荐
JavaScript中如何中断forEach循环
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验