1. 程式人生 > >JSt中關於filter()的妙用

JSt中關於filter()的妙用

filter()方法使用指定的函式測試所有元素,並建立一個包含所有通過測試的元素的新陣列。

**filter()基本語法:**
   arr.filter(callback[, thisArg])

  filter()引數介紹:
   引數名 說明
   callback 用來測試陣列的每個元素的函式。呼叫時使用引數 (element, index, array)
  返回true表示保留該元素(通過測試),false則不保留。
  thisArg 可選。執行 callback 時的用於 this 的值。

  filter()用法說明:

    filter 為陣列中的每個元素呼叫一次 callback 函式,並利用所有使得 callback 返回 true 或 等價於 true 的值 的元素建立一個新陣列。
    callback 只會在已經賦值的索引上被呼叫,對於那些已經被刪除或者從未被賦值的索引不會被呼叫。那些沒有通過 callback 測試的元素會被跳過,不會被包含在新陣列中。

    callback 被呼叫時傳入三個引數:

    元素的值
    元素的索引
    被遍歷的陣列
    如果為 filter 提供一個 thisArg 引數,則它會被作為 callback 被呼叫時的 this 值。否則,callback 的this 值在非嚴格模式下將是全域性物件,嚴格模式下為 undefined。

    filter 不會改變原陣列。

    filter 遍歷的元素範圍在第一次呼叫 callback 之前就已經確定了。在呼叫 filter 之後被新增到陣列中的元素不會被 filter 遍歷到。
    如果已經存在的元素被改變了,則他們傳入 callback 的值是 filter 遍歷到它們那一刻的值。被刪除或從來未被賦值的元素不會被遍歷到。

例如,在一個Array中,刪掉偶數,只保留奇數,可以這麼寫:

var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (item) {
 return item % 2
!== 0; }); r; // [1, 5, 9, 15]

把一個Array中的空字串刪掉,可以這麼寫:

var arr = ['A', '', 'B', null, undefined, 'C', ' '];
var r = arr.filter(function (item) {
 return item && item.trim(); // 注:IE9(不包含IE9)以下的版本沒有trim()方法
});
arr; // ['A', 'B', 'C']

重點內容