如何区分两个不可变对象

时间:2015-07-22 16:26:40

标签: javascript immutable.js

有没有办法在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());

在测试以查看对象的不同之处时,这将非常有用。

它不必显示明确添加/删除的内容。我只想查看ab不同的属性,以便我可以再次使它们相等。

例如我这样做:

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

1 个答案:

答案 0 :(得分:0)

通常,一个人可以很快地看到差异,因此最常知道它们确实不同的地方是:Immutable.is()比较两个集合,并告诉您何时它们不包含相同的元素。

如果这还不够,请使用npm软件包deep-diff之类的东西:

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