Array.find()和Array.findIndex()
阿新 • • 發佈:2018-12-21
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
可參考官方文件