javascript - javascript array.find() 对象未定义?
问题描述
为什么对象未定义,如果我在 arr.find 中用“this”调用它?
let o = { name: 'foobar' };
let arr = [3, o, 4, 5];
arr.find(x => console.log(this), o);
解决方案
如果要使用设置的第二个参数,find()
则this
需要传递常规函数,因为您无法重新绑定this
到箭头函数:
let o = { name: 'foobar' };
let arr = [3, o, 4, 5];
let p = arr.find(function(x){
console.log(this)
return x === this
}, o);
console.log("found:", p)
推荐阅读
- sql - 在 WHERE 子句中将 nvarchar 转换为 bigint 时出错,但在 SELECT 中有效
- python - 传递 sklearn 管道中的所有列
- unit-testing - 使用 kotlin mockito 对 catch 块进行单元测试
- filter - 每个 id 对相同值求和一次
- angular - Angular *ngFor 循环 - 类型“OrderItem”不可分配给类型“Iterable”
' - python - json.dumps() 无法转换此字典字符串
- bash - Bash 脚本输出不替换源文件内容
- javascript - 如何在没有 Object.keys() 的情况下遍历对象数组?
- javascript - 执行同一 js 文件中定义的另一个事件处理函数后,一个事件处理函数未触发
- postgresql - 如何为只读模式 Postgresql 创建第二个用户