Immutable.js collections are treated as pure data values. Two immutable collections are considered value equal (via
.equals()
oris()
) if they represent the same collection of values. This differs from JavaScript's typical reference equal (via===
or==
) for Objects and Arrays which only determines if two variables represent references to the same object instance.
Immutable.js
中的集合是被当做纯粹的数据的,如果两个immutable 集合
的值完全相同,那他们就被认为是 值相等
,可以通过 equal()
或者 is()
来判断两个集合是否相等。
这点与 JavaScript
中的典型的 引用相等
(通过 ===
或 ==
) 不一样 ,后者只是判断两个变量是否是同一个对象实例的应用。
// First consider:
const obj1 = { a: 1, b: 2, c: 3 };
const obj2 = { a: 1, b: 2, c: 3 };
obj1 !== obj2; // 使用 ===时,两个不同的实例对象永远不相等(即使他们的数据完全一样)
const { Map, is } = require('immutable@4.0.0-rc.9');
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = Map({ a: 1, b: 2, c: 3 });
map1 !== map2; // true 两个变量不是 `引用相等的`
map1.equals(map2); // 但是他们是值相等的,因为他们有同样的数据
is(map1, map2); // 或者直接用is() 来判断
Value equality allows Immutable.js collections to be used as keys in Maps or values in Sets, and retrieved with different but equivalent collections:
值相等
这个特性允许 Immutable.js
的集合 作为 Map
的key
,或者作为Set
的值
const { Map, Set } = require('immutable');
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = Map({ a: 1, b: 2, c: 3 });
const set = Set().add(map1);
set.has(map2); // true 因为map1 和 map2 是值相等的
网友评论