簡體   English   中英

如何區分兩個不可變對象

[英]How to diff two immutable objects

有沒有辦法在Immutable區分對象?

例:

let a = Immutable.fromJS({ a: 10 });

let b = Immutable.fromJS({ b: 10 });

let d = Immutable.diff(a, b);

// { a: 10 }
console.log(d.toJS());

在測試以查看對象如何不同時,這將非常有用。

它不必顯示明確添加/刪除的內容。 我只想說看到的屬性a不同於b ,這樣我可以讓他們再次相等。

例如,我這樣做:

console.log(a.toJS());
console.log(b.toJS());

並檢查日志以查看與b的不同之處。

在其他想法中,它可能在同一輸出中顯示addedremoved屬性。 重點是看他們不平等的地方。

所以它也可能是:

// { a: 10, b: 10 }
console.log(d.toJS());

或者可能:

// { added: { a: 10 }, removed: { b: 10 } }
// console.log(d.toJS());

通常人類可以非常快地看到差異,因此他們確實不同的知識通常是足夠的: Immutable.is()比較兩個集合並告訴你它們何時不包含相同的元素。

如果這還不夠,請使用像npm包deep-diff這樣的東西:

const diff = require('deep-diff').diff;
var differences = diff(a.toJS(), b.toJS());
copnsole.log('diff', differences);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM