如何区分两个不可变对象

How to diff two immutable objects

本文关键字:两个 不可变 对象 何区      更新时间:2023-09-26

是否有办法在不可变中区分对象?

的例子:

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());

并检查日志,查看a与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());
console.log('differences:', differences);