Javascript 为什么我在将array.find的结果赋值给变量时未定义?

Javascript 为什么我在将array.find的结果赋值给变量时未定义?,javascript,arrays,find,Javascript,Arrays,Find,我在回调中放置了一个断点,在这里我应该对一个对象数组进行搜索。find语句返回我期望的元素,但如果我尝试将此结果赋给变量,则会得到“undefined” let resultCallback = function(data) { var el = form.texts.find(text => { text.options.name === this.options.name; }, that);// breakpoint is here //in console, for

我在回调中放置了一个断点,在这里我应该对一个对象数组进行搜索。find语句返回我期望的元素,但如果我尝试将此结果赋给变量,则会得到“undefined”

let resultCallback = function(data) {
  var el = form.texts.find(text => {
    text.options.name === this.options.name;
  }, that);// breakpoint is here
//in console, form.texts.find(text => {text.options.name === this.options.name}, that); returns the element I"m looking for
// but el still is 'undefined'

};
我不确定我是否使用了任何保留变量名,但改变名称并不能解决问题。当查看文档时,我发现我可以将find的结果分配给一个变量,所以我不确定这里出了什么问题


有人能帮忙吗?

您的find函数不返回任何内容,默认情况下,这意味着它返回未定义的
。要么丢失第2-4行的代码块,要么在
text.options.name==this.options.name;


使用arrow函数时,如果定义块,则必须使用return关键字。否则,它将在arrow之后立即返回表达式。

您对上下文有问题。您使用的此对象的上下文属于resultCallback函数,因为它不是arrow函数。我不知道在何处声明此函数,但请尝试更改它首先是箭头功能,即

let resultCallback = (data) => {
  var el = form.texts.find(text => 
    text.options.name === this.options.name, that
  );
};

您正在将此对象引用作为要查找的第二个参数传递,这是不必要的,因为在调用resultCallback函数时,您没有将“that”作为参数传递给该函数。此外,还要从arrow函数中删除卷曲,以便它返回比较结果。

.find()
如果谓词与数组中的任何元素都不匹配,则返回
未定义的
。另外,当您在
=>
函数体周围使用
{}
时,必须使用显式
返回
语句。返回语句成功了…我不知道这一疏忽。谢谢!