filter() 會將所有陣列中的元素分別傳入一次至 callback 函式當中,並將所有傳入此回呼函式並得到回傳值為 Truthy 的元素建構成一個新的陣列。callback 函式只會於陣列目前迭代之索引有指派值時被呼叫,回呼函式不會在該陣列索引已被刪除或從未被賦值時被調用。原始陣列中沒有通過 callback 檢驗的元素會被簡單的跳過,且不會被包含在新建立的陣列中。
callback 函式於被調用時會傳入三個參數:
元素值 元素之索引 被迭代的陣列物件若有提供 thisArg 參數予 filter 方法,thisArg 將會被當作回呼函式的 this 值,否則 this 會是 undefined。callback 的最終 this 值是依據函式的 this 規則來決定。
filter() 不會修改呼叫它的原始陣列。
由 filter() 方法所回傳之新陣列的範圍,於 callback 函式第一次被調用之前就已經被設定。而在呼叫 filter() 之後才加至原始陣列中的元素,將不會傳入 callback 當中。假如原始陣列中元素的值改變或被刪除了,則 callback 得到此元素的值將會是 filter() 傳入元素當下的值。而被刪除的原始陣列元素並不會被迭代到。