我正在尝试使用 Array.prototype.includes
在数组中查找对象。这可能吗?我意识到浅比较和深比较是有区别的。这就是下面代码返回 false 的原因吗?我找不到 Array.includes()
的相关答案。
原文由 timothym 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试使用 Array.prototype.includes
在数组中查找对象。这可能吗?我意识到浅比较和深比较是有区别的。这就是下面代码返回 false 的原因吗?我找不到 Array.includes()
的相关答案。
原文由 timothym 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是因为两个对象都不相同。两者存储在内存中的不同位置和相等操作结果 false
。
但是如果你搜索同一个对象,那么它会返回 true
。
另外,看看下面的代码,您可以了解到两个相同的对象也会产生 false
和 ===
运算符。
对于在 ===
中返回 true
的两个对象,它们应该指向相同的内存位置。
原文由 Rahul Gandhi 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
Array.includes
按对象标识进行比较,就像obj === obj2
一样,遗憾的是这不起作用,除非这两个项目是对同一对象的引用。您可以经常使用Array.prototype.some()
而不是它需要一个函数:但是你当然需要编写一个小函数来定义你所说的相等性。