javascript - Array.find+箭頭函數
我想大声告诉你
我想大声告诉你 2017-06-26 10:54:10
0
2
920

昨天看到一段程式碼,是這樣的:

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,而沒有參數,想知道這段程式碼到底是如何實現的呢?請諸大神幫解惑

我想大声告诉你
我想大声告诉你

全部回覆(2)
小葫芦
pet = pets.find(function(pet) {
      return pet.type === 'Dog' && pet.name === 'Tommy';
});

把箭頭函數轉換成ES5就是這樣。

find用來找出第一個符合條件的陣列成員。它的參數是一個回呼函數,所有陣列成員依序執行該回呼函數,直到找出第一個傳回值為true的成員,然後傳回該成員。如果沒有符合資格的成員,則傳回undefined

這些API還是需要多查閱文檔,都是基礎知識不用轉彎的東西。

MDN文檔

es6 手冊

仅有的幸福

pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');
等效於

pets.find((pet) => {
      return pet.type ==='Dog' && pet.name === 'Tommy';
});

箭頭函數只有一個參數的時候,小括號可以省略

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板