Javascript Immutable.js不按值进行比较

Javascript Immutable.js不按值进行比较,javascript,immutable.js,Javascript,Immutable.js,我肯定我做得有点不正确,但我尝试使用Immutable.js进行函数式编程,我在按值比较对象时遇到了问题。 在文档中,集合数据结构使用Immutable.is进行相等和包含测试,页面使用Immutable.is状态 语义类似于Object.is的值相等性检查,但将不可变集合视为值,如果第二个集合包含等效值,则值相等 但是,当我在Firefox的调试器上测试此行为时,我得到以下结果: let x = {a:1} let y = {a:1} is(x,y) //False is({a:1},{a:1

我肯定我做得有点不正确,但我尝试使用Immutable.js进行函数式编程,我在按值比较对象时遇到了问题。 在文档中,集合数据结构使用Immutable.is进行相等和包含测试,页面使用Immutable.is状态

语义类似于Object.is的值相等性检查,但将不可变集合视为值,如果第二个集合包含等效值,则值相等

但是,当我在Firefox的调试器上测试此行为时,我得到以下结果:

let x = {a:1}
let y = {a:1}
is(x,y) //False
is({a:1},{a:1}) //False
Set.of({a:1}).includes({a:1}) //False

然后我想也许我必须使用Immutable的映射而不是对象文本,但我仍然得到以下结果:

let x = Map({a:1})
let y = Set(Map({a:1}))
y.includes(x) //False

let x = []
x.push(Map({a:1}))
x.includes(Map({a:1})) //False
我也用Lodash中的.includes得到了类似的结果,所以我想有一些明显的东西我没有看到。
如何按值比较列表中的项目?

在进行对象相等性比较之前,需要将对象转换为一个值

您还需要使用该方法进行等式比较

const x={a:1}
常数y={a:1}
常量xImmutable=Immutable.Map(x)
常量yImmutable=Immutable.Map(y)
console.log(Immutable.is(x,y))//false
console.log(x==y)//false
log(Immutable.is(xImmutable,yImmutable))//true
console.log(xImmutable==yImmutable)//false

在进行对象相等性比较之前,您需要将对象转换为

您还需要使用该方法进行等式比较

const x={a:1}
常数y={a:1}
常量xImmutable=Immutable.Map(x)
常量yImmutable=Immutable.Map(y)
console.log(Immutable.is(x,y))//false
console.log(x==y)//false
log(Immutable.is(xImmutable,yImmutable))//true
console.log(xImmutable==yImmutable)//false

我的直觉是,您需要创建第二个不可变对象,然后使用.equals.immutable.js不会按属性值比较对象。is()方法与Object具有相同的语义。is()
两个对象都是相同的对象(意味着两个对象都有相同的引用)
我的直觉是,您需要创建第二个不可变对象,然后使用.equals.immutable.js将不会按属性值比较对象。is()方法与Object具有相同的语义。is()
两个对象都是相同的对象(意味着两个对象都有相同的引用)