如何在Javascript .filter()方法中将额外的参数传递给回调函数?

密探 :

我想将数组中的每个字符串与给定的字符串进行比较。我当前的实现是:

function startsWith(element) {
    return element.indexOf(wordToCompare) === 0;
}
addressBook.filter(startsWith);

这个简单的函数有效,但是仅因为现在将wordToCompare设置为全局变量,但是我当然想避免这样做并将其作为参数传递。我的问题是我不确定如何定义startsWith(),因此它不能接受一个额外的参数,因为我真的不了解如何传递其默认参数。我尝试了所有可以想到的不同方式,但都无济于事。

如果您还可以解释将参数传递给“内置”回调函数的方法(对不起,我不知道这些更好的术语)会很好

费利克斯·克林(Felix Kling):

使startsWith接受单词进行比较并返回一个函数该函数将随后用作过滤器/回调函数:

function startsWith(wordToCompare) {
    return function(element) {
        return element.indexOf(wordToCompare) === 0;
    }
}

addressBook.filter(startsWith(wordToCompare));

另一种选择是使用Function.prototype.bind [MDN](仅在支持ECMAScript 5的浏览器中可用,请为较旧的浏览器使用填充程序链接)并“修复”第一个参数:

function startsWith(wordToCompare, element) {
    return element.indexOf(wordToCompare) === 0;
}

addressBook.filter(startsWith.bind(this, wordToCompare));

我真的不明白如何传递默认参数

没什么特别的。在某个时候,filter只需调用回调并传递数组的当前元素即可。因此,这是一个调用另一个函数的函数,在这种情况下,您将作为参数传递的回调。

这是一个类似函数的示例:

function filter(array, callback) {
    var result = [];
    for(var i = 0, l = array.length; i < l; i++) {
        if(callback(array[i])) {  // here callback is called with the current element
            result.push(array[i]);
        }
    }
    return result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在express中将参数传递给回调函数?

如何在Python中将参数传递给回调函数?

在javascript中将参数传递给回调函数

如何在JavaScript中将变量传递给回调函数

JavaScript:如何将额外的参数传递给回调

React - 如何在回调函数中将参数从子级传递给父级(onClick)

如何在flutter中将参数传递给回调?

如何提交表单并将一些额外的参数传递给$ .getJSON回调方法?

将参数传递给JavaScript中的url回调函数

Javascript将参数传递给回调函数

JavaScript:将参数传递给回调函数

如何将参数传递给回调函数内部

如何将参数传递给匿名回调函数?

如何将参数传递给addEventListener的回调函数

如何将方法作为回调/处理程序参数传递给函数?

如何在JavaScript中将参数传递给匿名函数?

猫鼬如何在exec回调函数中传递额外的参数

如何在Node.js中将参数传递给mysql查询回调

如何在php中将正则表达式参数传递给preg replace回调?

如何在Flutter中将额外的参数传递给ListView.builder Widget的itemBuilder函数?

如何在Node.js中将函数/回调传递给子进程?

如何在Node.js中将变量传递给预定义的回调函数

如何在Android中将不同的回调传递给相同的函数

如何将函数参数传递给 JavaScript 中的回调函数?

如何在Spark SQL中将额外的参数传递给UDF?

如何在Delphi中将对象方法作为回调方法传递给C ++ dll

如何在puppeteer的$ eval中将变量传递给回调?

如何在不访问Java母函数的情况下将参数传递给回调

Javascript回调函数传递给Android