我可以总是使用 Map.equals() 比较两个 Immutable.Map 吗?计算复杂度真的不同于两个相同对象上的“===”吗?
Could I always compare two Immutable.Map using Map.equals() ? The computational complexity is really different than "===" on two identical objects?
我想了解 Immutable.equals() 的计算复杂度。
我没有通过阅读源代码清楚地找到我的答案,也没有在网络讨论中...
var obj1 = Immutable.Map({a: 1, b: 2, c: 'lot of entries'});
var obj2 = obj1.set('a', 1);
obj1.equals(obj2)
是否会比较对象的每个键,即使有相等的对象?
如果它比较每个键,我最好将它与 obj1===obj2
.
进行比较
Immutable 在比较对象的每个 keys/values 之前是否验证 === 相等性?
在两个相同对象的情况下,了解 Immutable.equals() 和 === 运算符的计算复杂度是否存在很大差异会很有趣。
这里有两个概念在起作用:身份和平等。 ===
on Object
s returns 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
我们可以得出结论如果x
和y
指的是同一个对象那么它们应该相等。这确实是 what immutable.js
does when comparing two objects.
反之则不然。您可以有两个不相同的相等对象。最简单的例子是:
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
总而言之:equals
(由 immutable.js
实现)始终执行 ===
检查,因此至少需要相同的时间。 您需要牢记相等性和同一性之间的区别,并相应地使用 ===
或 equals
.
我想了解 Immutable.equals() 的计算复杂度。 我没有通过阅读源代码清楚地找到我的答案,也没有在网络讨论中...
var obj1 = Immutable.Map({a: 1, b: 2, c: 'lot of entries'});
var obj2 = obj1.set('a', 1);
obj1.equals(obj2)
是否会比较对象的每个键,即使有相等的对象?
如果它比较每个键,我最好将它与 obj1===obj2
.
进行比较
Immutable 在比较对象的每个 keys/values 之前是否验证 === 相等性?
在两个相同对象的情况下,了解 Immutable.equals() 和 === 运算符的计算复杂度是否存在很大差异会很有趣。
这里有两个概念在起作用:身份和平等。 ===
on Object
s returns 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
我们可以得出结论如果x
和y
指的是同一个对象那么它们应该相等。这确实是 what immutable.js
does when comparing two objects.
反之则不然。您可以有两个不相同的相等对象。最简单的例子是:
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
总而言之:equals
(由 immutable.js
实现)始终执行 ===
检查,因此至少需要相同的时间。 您需要牢记相等性和同一性之间的区别,并相应地使用 ===
或 equals
.