# [學習筆記] 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); } }); }); ```