javascript - Array.find+箭頭函數(shù)
問題描述
昨天看到一段代碼,是這樣的:
const pets = [ { type: ’Dog’, name: ’Max’}, { type: ’Cat’, name: ’Karl’}, { type: ’Dog’, name: ’Tommy’},]function findDog(name) { for(let i = 0; i<pets.length; ++i) { if(pets[i].type === ’Dog’ && pets[i].name === name) { return pets[i]; } }}
用短方法后:
pet = pets.find(pet => pet.type ===’Dog’ && pet.name === ’Tommy’);console.log(pet); // { type: ’Dog’, name: ’Tommy’ }
我查了查arr.find方法,定義是array.find(function(currentValue, index, arr),thisValue)
上面的代碼在pet=pets.find()內(nèi)又傳入pet,而沒有參數(shù),想知道這段代碼到底是如何實現(xiàn)的呢?請諸大神幫解惑
問題解答
回答1:pet = pets.find(function(pet) { return pet.type === ’Dog’ && pet.name === ’Tommy’;});
把箭頭函數(shù)轉(zhuǎn)換成ES5就是這樣。
find用于找出第一個符合條件的數(shù)組成員。它的參數(shù)是一個回調(diào)函數(shù),所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù),直到找出第一個返回值為true的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined。
這些API還是需要多查閱文檔,都是基礎(chǔ)知識不用轉(zhuǎn)彎的東西。
MDN文檔
es6 手冊
回答2:pets.find(pet => pet.type ===’Dog’ && pet.name === ’Tommy’);等效于
pets.find((pet) => { return pet.type ===’Dog’ && pet.name === ’Tommy’;});
箭頭函數(shù)只有一個參數(shù)的時候,小括號可以省略
相關(guān)文章:
1. MySQL數(shù)據(jù)庫中文亂碼的原因2. php - mysql連表統(tǒng)計查詢3. MySQL分表之后如何做排序的問題4. mysql - 連續(xù)的24條sql語句,一條條查,還是union all好?5. mysql主從復(fù)制 REPLICATE_DO_DB 參數(shù)從服務(wù)器reboot后每次都回滾為初始設(shè)置6. MySQL不知道錯哪里了?7. mysql事務(wù)日志的一些問題8. Mysql存儲過程問題9. 數(shù)據(jù)庫 - mysql boolean型無法插入true10. phpstuty 修改完監(jiān)聽端口,apache無法啟動
