请问你说的是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): ƒ]
[]