如何区分两个不可变对象
How to diff two immutable objects
是否有办法在不可变中区分对象?
的例子:
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的不同之处。
在其他认为它可能同时显示added
和removed
性质在同一输出。关键是要找出它们不相等的地方。
也可以是:
// { 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);
相关文章:
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- 同一事物的两个函数,一个崩溃,另一个不崩溃,为什么
- 如何添加两个变量而不使其在javascript中连接
- 如何让两个不相关的 React 组件一起工作
- D3 - 在两个不与其他对象相交的对象之间绘制一条线
- D3 map - 将两个不相交的 SVG 多边形路径合并为一个路径
- 如何检查两个不可变JS映射是否具有相同的键
- 2 可变结果不能有两个
- 如何将两个不相关的元素粘在一起
- 两个不可变的列表 - 如何使三重平等工作
- 一个jQuery工作,两个不工作
- 一个JavaScript函数运行,但两个不运行
- Javascript加载了两个不返回数据的函数
- 我想知道如何创建两个不受相同代码影响的可搜索表
- 如何找到两个相同的行,并删除他们两个?(不只是一个副本!)
- 两个不相互作用的多层复选框系统
- 如何区分两个不可变对象
- 如何用jquery处理两个不相关的事件