如何在JavaScript查找函数中传递参数?

问题描述:

枝,如何在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的结果。

那么,如何将自定义参数传递给查找函数?

+1

你不能,但你不应该需要。你可以简单地引用函数体中的值。 – Pointy

这是一种回调方法,允许您引用回调范围之外的变量。

例子:

var id = 10; 
var foundDoc = list.find((document) => document.id == id); 

// alternative syntax 
var foundDoc = list.find((document) => { 
    return document.id == id; 
}); 

在您的例子find需要断言,如果有一个匹配应该返回真/假。在第一次发生true(一场比赛)时,该项目将返回给主叫方。

+0

感谢您的帮助。有效。 – sam23

+0

@ sam23 - 很乐意提供帮助。 – Igor

那么,如何将自定义参数传递给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中所示。