ES6中提供了一種非常便捷的方式來對比兩個JSON對象的差異。
當需要比較兩個JSON對象時,一般的方式是使用for循環迭代遍歷兩個對象,逐一比較它們的每一個屬性值是否一致。這種方式非常繁瑣而且容易出錯。但在ES6中,我們可以使用如下方式來實現:
const obj1 = { name: 'Tom', age: 18 }; const obj2 = { name: 'Tom', age: 19 }; const diff = (obj1, obj2) =>Object.keys(obj1).concat(Object.keys(obj2)).reduce((prev, key) =>{ if (obj1[key] !== obj2[key]) { prev[key] = [obj1[key], obj2[key]]; } return prev; }, {}); console.log(diff(obj1, obj2)); // { age: [18, 19] }
上述代碼中,我們定義了兩個JSON對象:obj1和obj2。接著我們定義了一個名為diff的函數,此函數接收兩個對象作為參數,函數的主要作用是比較這兩個對象的差異。
在diff函數內部,我們調用了Object.keys()方法,該方法返回一個對象的屬性名數組。我們通過將obj1和obj2的屬性名數組合并起來,獲得了這兩個對象所有的屬性名。接著我們使用reduce()方法循環遍歷這些屬性名,判斷obj1和obj2中對應屬性值是否一致。若不一致,則將此屬性名和對應的屬性值數組加入到prev對象(用于存儲每個屬性的差異)中。最后diff函數返回prev對象。
上述代碼運行結果為{ age: [18, 19]},表示obj1和obj2中age屬性的值不同。通過這種方式,我們不僅可以輕松比較兩個對象的差異,而且可讀性更強。
上一篇python 替換0值