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中文网其他相关文章!