首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Javascript .filter()方法中向回调函数传递额外的参数?

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

Stack Overflow用户
提问于 2011-10-14 03:12:03
回答 5查看 95.8K关注 0票数 117

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

代码语言:javascript
复制
function startsWith(element) {
    return element.indexOf(wordToCompare) === 0;
}
addressBook.filter(startsWith);

这个简单的函数可以工作,但仅仅是因为现在wordToCompare被设置为全局变量,当然我希望避免这种情况,并将其作为参数传递。我的问题是,我不确定如何定义startsWith(),所以它接受一个额外的参数,因为我并不真正理解它接受的默认参数是如何传递的。我尝试了我能想到的所有不同的方法,但它们都不起作用。

如果你还能解释一下传递给‘内置’回调函数的参数是如何工作的(对不起,我不知道用什么更好的术语来描述这些函数),那就太好了

EN

回答 5

Stack Overflow用户

发布于 2017-08-21 03:12:13

对于那些正在寻找使用箭头函数的ES6替代品的人,您可以执行以下操作。

代码语言:javascript
复制
let startsWith = wordToCompare => (element, index, array) => {
  return element.indexOf(wordToCompare) === 0;
}

// where word would be your argument
let result = addressBook.filter(startsWith("word"));

使用includes更新版本

代码语言:javascript
复制
const startsWith = wordToCompare => (element, index, array) => {
  return element.includes(wordToCompare);
}
票数 17
EN

Stack Overflow用户

发布于 2011-10-14 03:14:44

代码语言:javascript
复制
function startsWith(element, wordToCompare) {
    return element.indexOf(wordToCompare) === 0;
}

// ...
var word = "SOMETHING";

addressBook.filter(function(element){
    return startsWith(element, word);
});
票数 11
EN

Stack Overflow用户

发布于 2017-10-29 05:11:41

对于任何想知道为什么他们的胖箭头函数忽略[, thisArg]的人,例如为什么

["DOG", "CAT", "DOG"].filter(animal => animal === this, "DOG")返回[]

这是因为这些箭头函数中的this是在创建函数时绑定的,并且在更广泛的范围内被设置为this的值,因此thisArg参数被忽略。通过在父作用域中声明一个新变量,我可以很容易地解决这个问题:

let bestPet = "DOG"; ["DOG", "CAT", "DOG"].filter(animal => animal === bestPet); => ["DOG", "DOG"]

这里有一个更多阅读的链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#No_separate_this

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7759237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档