Dam*_* Fa 0 complexity-theory dictionary equals immutable.js
我想了解 Immutable.equals() 的计算复杂度。我还没有通过阅读源代码清楚地找到我的答案,在网络讨论中也没有......
var obj1 = Immutable.Map({a: 1, b: 2, c: 'lot of entries'});
var obj2 = obj1.set('a', 1);
Run Code Online (Sandbox Code Playgroud)
是否obj1.equals(obj2)会比较即使有平等的对象的每个关键?
如果它比较每个键,我最好将它与obj1===obj2.
在比较对象的每个键/值之前,Immutable 是否验证 === 相等?
在两个相同对象的情况下,了解 Immutable.equals() 和 === 运算符的计算复杂度之间是否存在很大差异会很有趣。
这里有两个概念在起作用:身份和平等。当双方都引用同一个对象时,===on Objects 返回true。例如:
var x = {};
var y = {};
var z = x;
# x and y have the same keys and values but are two different objects.
x === y # => false
# x and z refer to the same object
x === z # => true
Run Code Online (Sandbox Code Playgroud)
我们可以得出结论,如果x和y引用同一个对象,那么它们应该是相等的。这的确是怎样immutable.js比较两个对象时做。
反过来就不对了。您可以有两个不相同的相等对象。最简单的例子是:
var x = new Map({ name: 'Greg' });
var y = new Map({ name: 'Greg' });
# x and y are two different objects
x === y # => false
# x and y are equal, i.e. they have equal keys and values
x.equals(y) # => true
Run Code Online (Sandbox Code Playgroud)
总结一下:(equals由 实现immutable.js)总是进行===检查,因此它至少需要相同的时间。你需要记住平等的身份和使用任何的区别===或equals相应。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |