js 内置函数filter()能传参数进去吗

2025-12-05 12:08:13
推荐回答(1个)
回答1:

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