# [學習筆記] Array 的 filter, find, some, every
### 將 filter/find 歸類在一類,因為他們都是回傳符合條件的元素
* filter:會回傳一個陣列,裡面有**所有符合**資格的元素,若沒有符合的值,則會回傳空陣列。
* find:會回傳**第一個符合**條件的值,若沒有符合的值,則是傳回 undefined。
### 將 some/every 歸類在一類,因為他們都是回傳布林值
* some:陣列中**至少有一個元素滿足**回呼函式的條件,就會返回 true,如果全部元素都不符合條件,則回傳 false。
* every:如果此陣列中的**每個元素都滿足**回呼函式給的條件,則回傳 true,如果有任何一個不符合條件,則回傳 false。
---
參考來源:
[JavaScript 常用陣列方法彙整](https://medium.com/%E9%A6%AC%E6%A0%BC%E8%95%BE%E7%89%B9%E7%9A%84%E5%86%92%E9%9A%AA%E8%80%85%E6%97%A5%E8%AA%8C/cheet-sheet-for-array-methods-9ef9c6a5f59f)
[JavaScript 的 filter() / find() / some() / every()](https://tina126hung.medium.com/javascript-filter-find-some-every-324da1ab844a)
Array.pototype.filter
丟進去 true, false 回傳符合條件的新陣列
Array.pototype.some
測試數組中是不是至少有1個元素通過了被提供的函數測試。
回傳布林值。
Array.pototype.find
傳回數組中滿足提供的測試函數的第一個元素的值。
否則返回 undefined。
---
假設我現在有兩個陣列
A = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
B = ['B','E','G']
我想找出 A 陣列裡面有符合 B 的元素
然後最後結果我要拿有符合 B 陣列值的新 A 陣列
所以我要用 A 陣列去 filter 出新陣列
再用 B 陣列去比對有符合 A 值有哪些
```javascript!
const resultArr = A.filter((Aitem) => {
B.some((Bitem) => Bitem.id === Aitem.id)
})
```
如果不用 filter 和 some 也可以,但就是用 forEach
```javascript!
const resultArray = []
A.forEach((Aitem) => {
B.forEach((Bitem) => {
if (Bitem.id === Aitem.id) {
resultArray.push(Aitem);
}
});
});
```