問題:
您需要比較兩個深層嵌套物件(oldObj 和newObj) )並識別它們之間的差異,包括更改、新增和刪除。挑戰在於以有意義且 JSON 可序列化的方式表示這些差異,尤其是在涉及陣列時。
解決方案:
建立通用深度差異演算法:
考慮開發一個genericDeepDiffBetweenObjects 方法,返回{add: { ...}, upd: {...}, del: {...}} 形式的物件。這將提供更改的基本表示。
改進的資料表示:
要獲得更全面的方法,請考慮使用與newObj 相同的物件結構,但轉換所有屬性值轉換為{type:
處理陣列比較:
由於需要考慮元素,陣列提出了獨特的挑戰平等秩序。複雜的解決方案會將基於值的類型(例如字串、整數和布林值)的陣列視為相等,無論順序為何。然而,像物件和陣列這樣的引用類型陣列需要更複雜的比較邏輯。
範例實作:
這裡是實作所提出的演算法的類別的片段,並且可以客製化以處理不同的值比較要求:
範例用法:
結論:
這種方法提供了一種強大且可自訂的方法來執行深度物件比較並以清晰的JSON 形式表示差異- 可串行化的方式。它可以根據需要進行擴展以處理更複雜的值比較要求或替代資料表示格式。
以上是如何在 JavaScript 中執行深度物件比較和轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!