首页 > 其他分享 >终止 Array.prototype.forEach 方法运行的方式

终止 Array.prototype.forEach 方法运行的方式

时间:2022-09-04 22:23:36浏览次数:68  
标签:index arr log item forEach Array prototype any

通常情况下,Array.prototype 上的遍历方法 forEach、map、filter、... 被调用以后会完整的遍历每一个数组项,并执行内部代码指令,无法被中途终止。

但是可以通过 throw 语句抛出错误,配合 try catch 语句来终止 forEach 语句的执行,如下例所示:

var arr = [1,2,3,4,5,6]
try {
    arr.forEach((item, index, a) => {
        if (index >= 2) {
            throw new Error('error')
        } else {
            console.log(item)
        }
    })
} catch (err) {
    console.log(err)
}
console.log('---- end')

/** log
1
2
Error: error
    at <anonymous>:5:19
    at Array.forEach (<anonymous>)
    at <anonymous>:3:9
---- end
*/

 

  可以进行简单的代码封装,以便于按以上方式进行使用:

interface CallBack {
    (item: any, index: number, arr: any[]): void
}
interface Condition {
    (item: any, index: number, arr: any[]): boolean
}
interface Traverse {
    (arr: any[], method: string, callback: CallBack, condition: Condition): void
}
/** */
const traverse:Traverse = (arr, method, callback, condition) => {
    try {
        arr[method]((item: any, index: number, a: any[]) => {
            if (condition(item, index, a)) {
                throw new Error('error')
            } else {
                callback(item, index, a)
            }
        })
    } catch (err) {
        console.log(err)
    }
}

  

标签:index,arr,log,item,forEach,Array,prototype,any
From: https://www.cnblogs.com/hello-world-01/p/16656322.html

相关文章

  • array、object、map、set常见方法
    引用数据类型有object,array,function一、数组一、创建数组1、使用数组字面量方法vararr1=[];//创建一个数组vararr2=[20];//创建一个包含1项数......
  • 简单介绍 js array.map、array.forEach、Object.assign、Object.keys用法
     1、 Object.assign,合并成新的对象formData.data=Object.assign({},toRaw(props.rowData)); 2、Object.keys,循环对象的key属性 Object.keys(enumObj).forEa......
  • map 和 forEach 的区别?
    map和forEach的区别:map有返回值,可以开辟新空间,return出来一个length和原数组一致的数组,即便数组元素是undefined或者是null。forEach默认无返回值,返回结果为un......
  • Arrays.copyOfRange学习
    Arrays.copyOfRange的使用方法功能:实现数组的拷贝功能,将数组拷贝至另外一个数组参数:original:第一个参数为要拷贝的数组对象from:第二个参数为拷贝的开始位置(包含)to:第三......
  • matlab中数据结构之-cell array
    不同与matlab中的array数据结构中存储的都是一样的数据,cellarray中可以存储不同的数据类型,而且cellarray也可以是向量或矩阵,数组中不同的元素指向不同的数值。原来主......
  • 完全解析Array.apply(null, { length: 1000 })
    Array.apply(null,{length:1000})点击打开视频讲解更加详细在阅读VueJS教程时有这么段democode:render:function(createElement){returncreateElement('div'......
  • Typescript类型体操 - First of Array
    题目中文实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。例如:typearr1=['a','b','c']typearr2=[3,2,1]typehead1=First<arr1>//e......
  • Java集合---ArrayList
    集合和数组的区别共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的ArrayList的构造方法和添加方法publicArrayList()创建一个空......
  • JAVA进阶--常用时间API、包装类、正则表达式、Array类、Lambda表达式、常见算法--202
    第一节 Date日期对象1、日期对象如何创建,如何获取时间毫秒值Datedate=newDate();Longtime=date.getTime();2、时间毫秒值怎么恢复成......
  • [Typescript Challenges] 4. Easy - First of Array
    Implementageneric First<T> thattakesanArray T andreturnsit'sfirstelement'stype.typearr1=['a','b','c']typearr2=[3,2,1]typehead1=F......