javascript - 通过引用查找数组中对象的索引?
问题描述
var obj = {'foo':'bar'};
var array = [obj, {'foo':'bar'}]
如何通过在这种情况下使用引用obj
变量找到数组中对象的索引?
我会考虑做类似的事情:array.findIndex((o) => o === obj)
但这是失败的证明吗?
解决方案
o === obj
表示(如果o
和obj
都是 type object
)o
并且obj
是完全相同的对象(相同的实例)。当且仅当它们引用相同的实例时,两个object
s===
相等。所以是的,它是“故障证明”。
你可以试试
var obj = {'foo':'bar'};
var array = [obj, {'foo':'bar'}]
console.log(array.findIndex((o) => o === obj)) // 0
var array = [{'foo':'bar'}, obj]
console.log(array.findIndex((o) => o === obj)) // 1
var array = [obj, obj]
console.log(array.findIndex((o) => o === obj)) // 0
var array = [{'foo':'bar'}, {'foo':'bar'}]
console.log(array.findIndex((o) => o === obj)) // -1
console.log(obj === obj) // true
console.log(obj === {'foo':'bar'}) // false
console.log({'foo':'bar'} === {'foo':'bar'}) // false
推荐阅读
- python - 我有一个关于在 python 烧瓶中执行的问题
- reactjs - 如何将 HTML 元素添加到 JavaScript 对象并在反应中使用
- javascript - Tempermonkey 脚本:同人圈登录
- php - 类方法PHP内的常量范围
- python - Python JSON 多个 API 请求
- spring - Spring p 命名空间在 IntelliJ 上显示“URI 未注册”错误
- python - 如何使用密码学获取 x509 证书的私钥
- oracle - ORACLE 在同一张表中使用 select 语句插入值
- sql - T-SQL 为组每 x 条记录重置序列
- autodesk-forge - Autodesk forge 查看器可以使用从模型衍生 API 生成的离线数据吗