Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue进阶(幺零七):arr.forEach() 跳出循环
我们都知道for循环里要跳出整个循环是使用break,但在数组中用forEach循环如要退出整个循环呢?使用break会报错,使用return也不能跳出循环。
全栈程序员站长
2022/09/05
1.5K0
js常用方法和一些封装(1)1.字符串相关2.数组相关
博主在js上已经花费了很长时间,不禁深深地被其轻巧而强大的功能,以及优雅灵活的写法所折服,一直没找到机会来总结一下,最近发现了简书这个不错的平台,正好把学习的东西做一个汇总。 题外话 我始终认为,学习编程最好的方式就是去写,甭管写的怎样,也要去练习。 当初学完了数组,我记得自己是先把里面的每一个方法都敲了一遍,然后反复思考,通过这些方法,我能够做些什么? 很多语法我一开始也是很不理解的,然而在不断地运用过程中,慢慢地就开始明白过来了。只要抓住一个大方向,然后不断地练,就一定能深入理解! 正如国外一个有名的数
剽悍一小兔
2018/05/17
1K0
Array对象的方法实现(4)----Array.prototype.findIndex和Array.prototype.forEach(实现常规参数的功能)
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。 语法:arr.findIndex(callback[, thisArg]) 注意:1,有返回值(找到的第一个元素下标或者没找到的-1)。2,不改变原数组
Rattenking
2021/01/29
6720
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
9970
Array对象的方法实现(3)----Array.prototype.filter和Array.prototype.find(实现常规参数的功能)
//filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
Rattenking
2021/01/29
6130
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
3460
this,call,apply,bind(万字长文)
前言 大家好啊,我是吒儿?,每天努力一点点?,就能升职加薪?当上总经理出任CEO迎娶白富美走上人生巅峰?,想想还有点小激动呢?。 这是我的第13期文章内容✍,希望能够把每一处知识点,说明白,(当然,如
达达前端
2020/06/16
1.3K0
读Zepto源码之IOS3模块
对角另一面
2017/12/27
7970
最近面试经常被问到的js手写题
防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行
helloworld1024
2022/11/08
5900
JavaScript 函数式编程—数组方法
闲逛的时候发现一个有趣的网站,ECMAScript 里面介绍了各种JS引擎和Node版本对JavaScript特性的支持,从ECMAScript5开始到未来2017将会有的特性。 ES5是JavaScript历史上最具革命的一个版本,开发者们开始摒弃对旧版本 IE 浏览器的支持,使用统一的风格编写JavaScript,并且新的ECMAScript规范也开始启动。目前几乎所有的浏览器环境和Node.JS环境都支持ES5。
李振
2021/11/26
8950
前端高频手写面试题整理汇总
1、call实现原理 Function.prototype.mycall = function (context) { // 当context为null时,其值则为window context = context || window; // this为调用mycall的函数。将this赋值给context的fn属性 context.fn = this; // 将arguments转为数组,并从下标1位置开始截取 let arg = [...arguments]
用户1272076
2021/09/08
5300
[第27 期]彻底分清Javascript forEach & map
JavaScript 中,数组的遍历我们肯定都不陌生,最常见的两个便是forEach 和 map。
皮小蛋
2020/03/02
5450
死磕 36 个 JS 手写题(搞懂后,提升真的大)
作为一个程序员,代码能力毋庸置疑是非常非常重要的,就像现在为什么大厂面试基本都问什么 API 怎么实现可见其重要性。我想说的是居然手写这么重要,那我们就必须掌握它,所以文章标题用了死磕,一点也不过分,也希望不被认为是标题党。
用户4456933
2021/06/01
1K0
前端必会面试题总结
描述:所有 promise 的状态都变成 fulfilled,就会返回一个状态为 fulfilled 的数组(所有promise 的 value)。只要有一个失败,就返回第一个状态为 rejected 的 promise 实例的 reason。
loveX001
2022/11/04
6100
前端面试复习计划,保熟~
实现:getBoundClientRect 的实现方式,监听 scroll 事件(建议给监听事件添加节流),图片加载完会从 img 标签组成的 DOM 列表中删除,最后所有的图片加载完毕后需要解绑监听事件。
loveX001
2022/12/07
1.3K0
重新撸一遍javascript (二)
key必须是字符串,如果不是js会自动转为字符串,比如对象作为key会转化成 字符串[object Object]
lilugirl
2020/04/24
3700
重新撸一遍javascript (二)
javascript前端:封装array的foreach方法
在日常工作中,会经常遍历数组,除了常用的for循环外,forEach应该也是最常用的
用户4831957
2019/10/11
9670
爆 肝 一 周 总 结 最全 JavaScript Array 方法详解
我们在日常开发中,与接口打交道最多了,前端通过访问后端接口,然后将接口数据二次处理渲染到页面当中。
程序员海军
2022/02/15
8770
爆 肝 一 周 总 结 最全 JavaScript Array 方法详解
JavaScript很简单?那你理解forEach对吗?
我们都知道,forEach() 方法对数组的每个元素执行一次给定的函数。它的语法也很简单:arr.forEach(callback(currentValue [, index [, array]])[, thisArg]):
Nealyang
2020/12/31
8190
JavaScript很简单?那你理解forEach对吗?
2022秋招前端面试题(四)(附答案)
这里可以理解为await后面的语句相当于放到了new Promise中,下一行及之后的语句相当于放在Promise.then中。
helloworld1024
2022/08/07
7940
推荐阅读
相关推荐
Vue进阶(幺零七):arr.forEach() 跳出循环
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档