ES6新增的兩個(gè)方法置吓,根據(jù)回調(diào)函數(shù)返回作為判斷依據(jù),按照數(shù)組順序進(jìn)行遍歷缔赠,符合條件(為真)時(shí)find()返回該值、findIndex()返回下標(biāo)友题。
arr.find(callback[, thisArg])
arr.findIndex(callback[, thisArg])
- callback為回調(diào)函數(shù)嗤堰,有三個(gè)參數(shù):value(數(shù)組遍歷到的當(dāng)前值)、index(當(dāng)前下標(biāo))度宦、arr(當(dāng)前數(shù)組)踢匣。
- thisArg可選,執(zhí)行callback時(shí)作為this對(duì)象的值戈抄。
我們可以簡(jiǎn)單測(cè)試一下:
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
根據(jù)描述我們可以大致寫出這兩個(gè)方法實(shí)現(xiàn)的代碼:
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;
};
//測(cè)試
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