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中文網其他相關文章!