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
可參考官方文檔