is()
和Object.is
类似的相等比较方法,但其是比较两个Collection
是否有相同的值。
is(first: any, second: any): boolean
用于比较两个不可变数据是否相等,包括Map
的键值对和Set
的成员。
import { Map, is } from 'immutable'
const map1 = Map({ a: 1, b: 1, c: 1 })
const map2 = Map({ a: 1, b: 1, c: 1 })
assert(map1 !== map2)
assert(Object.is(map1, map2) === false)
assert(is(map1, map2) === true)
// 译者注:assert为断言,传入值为false时将报错。Console.assert
is()不仅仅能比较原始的字符串、数值和不可变集合比如Map
和Set
,也能比较实现了包含equals()
和hashCode()
两个方法的ValueObject
。
注意:和Object.is
不同的是,Immutable.is
假定0
和-0
是相同的,与ES6的Map键值相匹配。