1. 程式人生 > >Array.find()和Array.findIndex()

Array.find()和Array.findIndex()

ES6新增的兩個方法,根據回撥函式返回作為判斷依據,按照陣列順序進行遍歷,符合條件(為真)時find()返回該值、findIndex()返回下標。

1.語法

arr.find(callback[, thisArg])

arr.findIndex(callback[, thisArg])

  • callback為回撥函式,有三個引數:value(陣列遍歷到的當前值)、index(當前下標)、arr(當前陣列)。
  • thisArg可選,執行callback時作為this物件的值。

2.使用

我們可以簡單測試一下:

var arr = [1,2,7,8,34,2,15,8];
var v = arr.find((value,index,arr) => {
    return value > 10;
});
console.log('v='+v);//v=34
var i = arr.findIndex((value,index,arr) => {
    return value > 3;
});
console.log('i='+i);//i=2

3.原始碼

根據描述我們可以大致寫出這兩個方法實現的程式碼:

Array.prototype.myfind = function(callback,THIS) {
    THIS = THIS || this;
    for(var i=0;i < this.length;i++){
        if(callback(this[i],i,this)){
            return this[i];
        }
    }
};
Array.prototype.myfindindex = function(callback) {
    for(var i=0;i < this.length;i++){
        if(callback(this[i],i,this)){
            return i;
        }
    }
    return -1;
};
//測試
var arr = [1,2,7,8,34,2,15,8];
var v = arr.myfind((value,index,arr) => {
    return value > 10;
});
console.log('v='+v);//v=34
var i = arr.myfindindex((value,index,arr) => {
    return value > 3;
});
console.log('i='+i);//i=2

可參考官方文件