我想创建一组不可变的路径。在我的例子中,路径只是一个字符串数组。假设我们有以下路径。
var paths = [["a"], ["a", "b", "c"]];
然后我像这样创建不可变集
var selectedPaths = Immutable.Set(paths);
尽管selectedPaths.first()
返回 ["a"]
,我不明白为什么 selectedPaths.contains(["a"])
返回 false
.
编辑: 好吧,我得到了为什么会发生这种情况的答案,但我仍然无法让它按照我的需要工作。
解决方案:正如@Alnitak 所说,我通过比较与Immutable.List(["a"])
的路径解决了这个问题。而不是简单的数组
最佳答案
根据 the docs , Immutable 使用Immutable.is()
函数来执行相等性检查,但是那个.is()
检查只在给定其他Immutable 时执行“值比较”检查.*
对象,而不是原生 JS 数组,它对其执行“引用比较”检查。
因此,请尝试将您的内部值存储为 Immutable.List
而不是普通的 JS 数组。
关于javascript - Immutable.Set.contains 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995444/