javascript 陣列條件搜尋: filter

我們要在 js 的一個陣列裡面去篩選我們想要的資料,可以使用 filter 的方式,首先我們先準備一個原始資料如下:

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)

這個熟悉的話對於要再處理物件是很方便的事情。

留言