如何在JavaScript查找函数中传递参数?
问题描述:
我有有一个id字段一个JSON对象:
document = {
id: 'some value',
...
}
,并存储该文档的列表。
var list = [{document}, {document} ...]
现在,我想打电话给名单上的JavaScript查找()函数与特定的id作为
list.find(document, id) => {
if (document.id == id)
return id
}
但它不工作,返回文档。我检查并发现,id参数值不是我传递的,而是列表中文档的索引值。我试图改变名字希望它是关键字的错误,但SAE的结果。
那么,如何将自定义参数传递给查找函数?
答
这是一种回调方法,允许您引用回调范围之外的变量。
例子:
var id = 10;
var foundDoc = list.find((document) => document.id == id);
// alternative syntax
var foundDoc = list.find((document) => {
return document.id == id;
});
在您的例子find需要断言,如果有一个匹配应该返回真/假。在第一次发生true
(一场比赛)时,该项目将返回给主叫方。
答
那么,如何将自定义参数传递给find函数?
Array.prototype.find
接受第二参数thisArg
。如果没有这样一个人为设置特定的需要但是,你倒是应该用更简单list.find(doc => doc.id === 2)
去
function finder(doc) {
return doc.id === this.id;
}
let list = [{id: 1}, {id: 2}, {id: 3}];
let doc = list.find(finder, {id: 2});
console.log(doc);
:你可以用它来传递自定义参数如下。您可以将硬编码的2
替换为外部范围中声明的变量,如Igor's answer中所示。
你不能,但你不应该需要。你可以简单地引用函数体中的值。 – Pointy