Array.includes() 在数组中查找对象

新手上路,请多包涵

我正在尝试使用 Array.prototype.includes 在数组中查找对象。这可能吗?我意识到浅比较和深比较是有区别的。这就是下面代码返回 false 的原因吗?我找不到 Array.includes() 的相关答案。

开发工具控制台

原文由 timothym 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 930
2 个回答

Array.includes 按对象标识进行比较,就像 obj === obj2 一样,遗憾的是这不起作用,除非这两个项目是对同一对象的引用。您可以经常使用 Array.prototype.some() 而不是它需要一个函数:

 const arr = [{a: 'b'}]
console.log(arr.some(item => item.a === 'b'))

但是你当然需要编写一个小函数来定义你所说的相等性。

原文由 Mark 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是因为两个对象都不相同。两者存储在内存中的不同位置和相等操作结果 false

但是如果你搜索同一个对象,那么它会返回 true

在此处输入图像描述

另外,看看下面的代码,您可以了解到两个相同的对象也会产生 false=== 运算符。

对于在 === 中返回 true 的两个对象,它们应该指向相同的内存位置。

在此处输入图像描述

原文由 Rahul Gandhi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题