javascript - Array.find+箭頭函數
問題描述
昨天看到一段代碼,是這樣的:
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()內又傳入pet,而沒有參數,想知道這段代碼到底是如何實現的呢?請諸大神幫解惑
問題解答
回答1:pet = pets.find(function(pet) { return pet.type === ’Dog’ && pet.name === ’Tommy’;});
把箭頭函數轉換成ES5就是這樣。
find用于找出第一個符合條件的數組成員。它的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值為true的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined。
這些API還是需要多查閱文檔,都是基礎知識不用轉彎的東西。
MDN文檔
es6 手冊
回答2:pets.find(pet => pet.type ===’Dog’ && pet.name === ’Tommy’);等效于
pets.find((pet) => { return pet.type ===’Dog’ && pet.name === ’Tommy’;});
箭頭函數只有一個參數的時候,小括號可以省略
相關文章:
1. angular.js使用$resource服務把數據存入mongodb的問題。2. 更新mysql中被別人鎖定的行, 能不能快速失敗直接報錯, 而不是一直等待3. python小白 想做一個能夠計算圓周率的代碼,不知道怎么寫4. mysql刪除一個空數據庫報錯Table storage engine for ’proc’ doe5. javascript - h5 video層級太高導致浮在div上面,如何解決?6. mysql - 數據庫建表方面的問題?7. javascript - Ajax加載Json時,移動端頁面向左上角縮小一截兒,加載完成后才正常顯示,這該如何解決?8. python運行后沒有任何反饋要怎么排查9. javascript - 如何獲取未來元素的父元素在頁面中所有相同元素中是第幾個?10. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?
