昨天看到一段程式碼,是這樣的:
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,而沒有參數,想知道這段程式碼到底是如何實現的呢?請諸大神幫解惑
把箭頭函數轉換成ES5就是這樣。
find
用來找出第一個符合條件的陣列成員。它的參數是一個回呼函數,所有陣列成員依序執行該回呼函數,直到找出第一個傳回值為true的成員,然後傳回該成員。如果沒有符合資格的成員,則傳回undefined
。這些API還是需要多查閱文檔,都是基礎知識不用轉彎的東西。
MDN文檔
es6 手冊
pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');
等效於
箭頭函數只有一個參數的時候,小括號可以省略