Immutable.Set.contains返回false

Xen*_*Sis 5 javascript immutable.js

我想创建一组不可变的路径.在我的例子中,路径只是一个字符串数组.所以我们说我们有以下路径.

var paths = [["a"], ["a", "b", "c"]];
Run Code Online (Sandbox Code Playgroud)

然后我创建这样的Immutable Set

var selectedPaths = Immutable.Set(paths);
Run Code Online (Sandbox Code Playgroud)

虽然selectedPaths.first()回归["a"],但我无法理解为什么要selectedPaths.contains(["a"])回报false.

编辑:嗯,我得到了一个答案,为什么会发生这种情况,但我仍然无法让它工作,因为我需要它.

解决方案:正如@Alnitak所述,我通过比较路径Immutable.List(["a"])而不是简单数组来解决这个问题

Aln*_*tak 2

根据文档,Immutable 使用该Immutable.is()函数执行相等性检查,但该.is()检查仅在给定其他Immutable.*对象时执行“值比较”检查,而不是本机 JS 数组,它对其执行“引用比较”检查。

因此,尝试将内部值存储为Immutable.ListJS 数组,而不是普通的 JS 数组。