【前言】
本系列為個人前端學習之路的學習筆記,在過往的學習過程中累積了很多筆記,如今想藉著IT邦幫忙這個平台做整理+再複習。
本系列標題一律以【】標示該篇文章主要涉及的內容,例如【JavaScript】、【Vue】等等。
若內容有誤,還麻煩各路大神不吝於點出問題,感激不敬。
在JavaScript中有許多操作陣列的方法,本篇將針對filter()
filter()最大的用途就是篩選資料,陣列.filter(callback function)
會將陣列中的資料一筆一筆作為參數帶入callback function中,當callback function return的值為true的時候,該資料就會被放到新的陣列中
例如這是一個「將大於3的資料放到新陣列」的範例:
const array = [1, 2, 3, 4, 5];
const newArray = array.filter(function(item, index, array){
return item > 3;
});
console.log(newArray); //[4, 5]
在這個案例中我們可以看到filter()的callback function有三個參數
第一個是陣列資料本身,以這個案例來說就是array的資料,這裡我將參數名稱命名為item
第二個是陣列資料的索引位置
第三個則是陣列本身,通常用到的機會不多
要注意的是,這三個參數名稱都是可以自訂的,但順序一定是這樣(第一個是資料,第二是索引,第三是陣列)
直接替換看看會發生什麼事:
const array = [1, 2, 3, 4, 5];
const newArray = array.filter(function(index, item, array){
return item > 3;
});
console.log(newArray); //[5]
在這個案例中,誤以為item代表資料的結果就是,這裡的item其實是資料的索引值,因此只有5的索引值大於3,所以最終newArray就只有一筆資料
filter()如同其名,是拿來篩選陣列資料的方法,並不會動到原始陣列
最常見的用法是將A陣列的資料透過filter()篩選,然後符合的資料丟到一個新陣列B裡面
此時陣列A和陣列B是完全不相關的,即便每次都是true,最終內容看起來一樣也是
const array = [1, 2, 3, 4, 5];
const newArray = array.filter(function(item){
return item > 0;
});
console.log(newArray === array); //false