javascript 陣列條件搜尋: filter
我們要在 js 的一個陣列裡面去篩選我們想要的資料,可以使用 filter 的方式,首先我們先準備一個原始資料如下:
要過濾的話用法如下,我們這邊可以再過濾後生成一個新的 array:
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
callback
此函式為一個斷言,用於測試陣列中的每個元素。回傳值為 true 時將當前的元素保留至新陣列中,若為 false 則不保留。可傳入三個參數:
element
原陣列目前所迭代處理中的元素。
index(選擇)
原陣列目前所迭代處理中的元素之索引。
array(選擇)
呼叫 filter 方法的陣列。
thisArg(選擇)
執行 callback 回呼函式的 this 值。
要取得年齡大於 20 歲的話
改成用 function
像這樣可以取得特定學校
這個熟悉的話對於要再處理物件是很方便的事情。
var people = [ { name: 'Jason', school: '建國中學', age: 18 }, { name: 'Sarah', school: '北一女中', age: 24 }, { name: 'Tony', school: '成功高中', age: 32 }, { name: 'Susan', school: '松山高中', age: 16 } ];
要過濾的話用法如下,我們這邊可以再過濾後生成一個新的 array:
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
callback
此函式為一個斷言,用於測試陣列中的每個元素。回傳值為 true 時將當前的元素保留至新陣列中,若為 false 則不保留。可傳入三個參數:
element
原陣列目前所迭代處理中的元素。
index(選擇)
原陣列目前所迭代處理中的元素之索引。
array(選擇)
呼叫 filter 方法的陣列。
thisArg(選擇)
執行 callback 回呼函式的 this 值。
要取得年齡大於 20 歲的話
var ageThan20 = people.filter(function(item, index, array){ return item.age > 20; // 取得大於 20 歲的 }); console.log(ageThan20); // Tony, Sarah
改成用 function
function isOrderThan(value) { return value.age >= 20; } var ageThan = people.filter(isOrderThan);
像這樣可以取得特定學校
var school = people.filter(function(item, index, array){ return item.school == "成功高中"; }); console.log(school)
這個熟悉的話對於要再處理物件是很方便的事情。
留言