請問妳說的是Array的filter函數嗎?Array的filter原生實現是只能傳遞壹個方法。
使用方式如下?
語法
var new_array = arr.filter(callback[, thisArg])
參數
callback
用來測試數組的每個元素的函數。調用時使用參數?(element, index, array)。
返回true表示保留該元素(通過測試),false則不保留。
thisArg
可選。執行?callback?時的用於?this?的值。
返回值
壹個新的通過測試的元素的集合的數組
如果需要修改傳入的function,可以使用javascript的bind函數修改,例如以下例子:
var?call?=?function(element,index,array){?console.log(arguments)}undefined
[1,2,3].filter(call)
VM637:1?Arguments(3)?[1,?0,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
VM637:1?Arguments(3)?[2,?1,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
VM637:1?Arguments(3)?[3,?2,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
[]
//通過bind函數將call的參數列表之前增加壹個字符串'a'
[1,2,3].filter(call.bind(null,'a'))
VM637:1?Arguments(4)?["a",?1,?0,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
VM637:1?Arguments(4)?["a",?2,?1,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
VM637:1?Arguments(4)?["a",?3,?2,?Array(3),?callee:?,?Symbol(Symbol.iterator):?]
[]