forEach 和 findIndex 的原理和区别, 用ES3和原型链来实现

905 阅读1分钟

forEach和findIndex都是数组的方法

forEach用于数组的循环处理

findIndex用于循环中满足条件的第一个数组项的Index

forEach使用

var arr1=[1,8,3,5,8,9,7];
var ret3 = arr1.forEach((value, index, arr) => {
  console.log(value)
})

findIndex的使用

var arr1=[1,8,3,5,8,9,7];
var ret3 = arr1.findIndex((value, index, arr) => {
    return value > 4
})

var ret4 = arr1.findIndex((value, index, arr) => {
    return value > 14
})
console.log(ret3)
console.log(ret4)

返回:
1
-1

forEach和findIndex的区别:forEach会循环数组,但是不会有返回值,可以在循环中做与返回值无关的数组处理,findIndex也会循环数组,会有return处理,当return的值为true时会返回第一个为true的数据项的index

forEach实现

   var arr1=[1,8,3,5,8,9,7];
    Array.prototype.myForEach=function(fn){
        var arr=this;
        for(var i=0;i<arr.length;i++){
            fn(arr[i],i,arr);
        }

    }
    var ret3 = arr1.myForEach((value, index, arr) => {
      console.log(value);
    })

findIndex实现

   var arr1=[1,8,3,5,8,9,7];
    Array.prototype.myFindIndex=function(fn){
        var arr=this;
        for(var i=0;i<arr.length;i++){
            if(fn(arr[i],i,arr)){
                return i;
            }
        }

    }
    var ret3 = arr1.myFindIndex((value, index, arr) => {
        return value>4;
    })
    console.log(ret3);