首页  >  文章  >  web前端  >  如何在 JavaScript 集中自定义对象相等性以进行深度比较?

如何在 JavaScript 集中自定义对象相等性以进行深度比较?

Linda Hamilton
Linda Hamilton原创
2024-11-07 22:38:02320浏览

How to customize object equality in JavaScript Sets for deep comparisons?

JavaScript Set 中对象相等性的自定义

上下文:
在 JavaScript 的 ES6 Set 对象中,相等性是由 === 运算符确定,该运算符比较对象引用。这种方法不适合深度比较对象。

问题:
如何在 Set 对象中自定义对象相等性,以实现类似于 Java 的 equals(Object) 方法的深度对象比较?

答案:
更新(2022 年 3 月):
正在提议引入记录和元组,它们是可以直接比较的不可变结构按值而不是参考。这将扩展到 Set 和 Map 对象,允许根据对象内容进行关键比较/查找。

原始答案:
ES6 Set 对象缺乏可自定义的比较方法。无法扩展其 .has()、.add() 和 .delete() 方法来执行深度对象比较。

尝试从 Set 派生自定义对象并使用深度覆盖上述方法由于缺乏底层 Set 对象的支持,比较逻辑会导致性能较差,需要暴力迭代来定位匹配项。

正如 ES6 规范中所指出的,在 Sets 中配置相等比较的功能已被由于实施方面的挑战而推迟。建议在 Set 中比较原始值或不可变值对象是否相等,因为在 JavaScript 中默认情况下它们是按值进行比较的。

以上是如何在 JavaScript 集中自定义对象相等性以进行深度比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

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