array1.filter(callbackfn[, thisArg])
參數 | 定義 |
---|---|
array1 | 必要項。 陣列物件。 |
callbackfn | 必要項。 最多接受三個引數的函式。 filter 方法會針對陣列中的每個元素各呼叫 callbackfn 函式一次。 |
thisArg | 選擇項。 this 關鍵字可在 callbackfn 函式中參考的物件。 如果省略 thisArg,則 this 的值就是 undefined。 |
新陣列,其中包含回呼函式針對來源陣列傳回 true 的所有元素。 如果回呼函式針對 array1 的所有元素都傳回 false,新陣列的長度就是 0。
如果 callbackfn 引數不是函式物件,就會擲回 TypeError 例外狀況。
filter 方法會針對陣列中的每個元素各呼叫 callbackfn 函式一次 (以遞增索引順序)。 回呼函式會略過陣列中遺漏的元素。
除了陣列物件之外,任何具有 length 屬性且具有數值索引屬性名稱的物件都可以使用 filter 方法。
回呼函式語法
回呼函式的語法如下:
function callbackfn(value, index, array1)
您最多可以使用三個參數宣告回呼函式。
下表列出回呼函式參數。
回呼引數 | 定義 |
---|---|
value | 陣列元素的值。 |
index | 陣列元素的數值索引。 |
array1 | 包含元素的陣列物件。 |
修改陣列物件
filter 方法不會直接修改原始陣列,但是回呼函式可以修改。 下表顯示啟動 filter 方法後修改陣列物件的結果。
filter 方法啟動後的狀況。 | 元素是否會傳遞至回呼函式? |
---|---|
在超出陣列原始長度的位置加入元素。 | 否。 |
加入的元素會填補至陣列中有遺漏元素的位置。 | 是 (如果該索引尚未傳遞至回呼函式的話)。 |
元素已變更。 | 是 (如果該元素尚未傳遞至回呼函式的話)。 |
從陣列中刪除元素。 | 否 (除非該元素已傳遞至回呼函式)。 |
在下列範例中,callbackfn 引數包含回呼函式的程式碼。
// Create the original array. var arr = [5, "element", 10, "the", true]; // Create an array that contains the string // values that are in the original array. var result = arr.filter( function (value) { return (typeof value === 'string'); } ); document.write(result); // Output: element, the