javascript - Immutable.Set.contains 返回 false

标签 javascript immutable.js

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

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/

相关文章:

javascript - HTML+JQUERY <标签> 已移动

javascript - React Redux 在单个对象属性更改时重新呈现整个列表

JavaScript : send actual html code to url

javascript - 多个 Onclick 事件 - 2 个事件中的 1 个正在运行

javascript - 根据表格数据对表格行进行排序

javascript - 如何使用 Immutability Helpers 推送数组中的第一个元素

javascript - Immutable.js或Lazy.js是否执行捷径融合?

javascript - 如何删除 reducer 内 immutable-js 中的嵌套状态对象?

reactjs - 使用 reselect 计算派生状态时如何避免 React 重新渲染

javascript - 比较数据选择器中的值