首页  >  文章  >  web前端  >  如何实现 JavaScript Set 对象中元素的深度相等比较?

如何实现 JavaScript Set 对象中元素的深度相等比较?

Barbara Streisand
Barbara Streisand原创
2024-11-12 05:28:02332浏览

How Can I Achieve Deep Equality Comparison for Elements in a JavaScript Set Object?

自定义 JavaScript Set 对象的相等性

在 ES6 (Harmony) 中,新的 Set 对象引入了其元素的引用相等性。然而,这种行为可能并不总是适合深入比较对象。

对象相等的意外行为:

考虑以下代码片段:

var set = new Set();
set.add({a:1});
set.add({a:1});
console.log([...set.values()]); // Array [ Object, Object ]

你可以看,即使两个对象具有相同的属性和值,由于引用相等,它们也被认为是不同的。

Set 的自定义比较对象:

不幸的是,ES6 Set 对象不提供用于自定义相等比较的内置方法。扩展它以覆盖比较逻辑也将具有挑战性。

潜在的解决方法:

虽然不直接支持 Set 对象的自定义比较,但您可以考虑使用替代数据结构或技术:

1。不可变值对象:

响应中提到的文章建议使用不可变值对象,这将允许 Set 使用深度值比较。然而,这目前还不是 JavaScript 中的标准。

2.具有深度比较的自定义数据结构:

您可以创建自己的自定义数据结构,该结构继承自 Set 并覆盖使用对象标识的方法。然而,这需要完全重写 Set 实现,这对于大型集合来说效率不高。

以上是如何实现 JavaScript Set 对象中元素的深度相等比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn