immutable.js - Map.entrySeq 的不可变顺序
问题描述
我有以下代码
[array with keys].reduce((acc, key) => acc.set(key, 1), Map());
Map 是 immutablejs Map 而不是 js Map。当我在它上面调用 Map.entrySeq() 时,它总是给我在 reduce 中执行 set() 的相同顺序。
我真的可以按这个顺序吗?
解决方案
immutable.js的文档很好,你可以依赖它。去引用:
Iteration order of a Map is undefined, however is stable.
Multiple iterations of the same Map will iterate in the same order.
所以答案是肯定的。请注意,您的代码性能很差,它会创建 N 次新地图。
用于withMutations
在临时的、可变的地图上执行所有操作:
Immutable.Map().withMutations(mutableMap => {
[array with keys].reduce((acc, key) => acc.set(key, 1), mutableMap);
});
推荐阅读
- arrays - 如何查询这种类型的 json?
- java - Gradle:由 gradle bootJar 任务创建的 jar 不起作用
- coldfusion - CFPDF action="protect" ColdFusion 无法删除文件
- oracle - 我可以在 Flyway 中使用 plsql 变量常量或变量吗
- javascript - 如何在 Safari 中忽略页面加载时的 window.onpopstate?
- arrays - 将数组或列表转换为哈希图/字典并对其进行操作是否更快?
- javascript - 为什么从 div onclick 添加和删除类不起作用?
- gnuplot - Octave中的高斯平滑
- react-native - PaypalButton(由 ScriptLoader 创建) 文本字符串必须在
零件 - python - 获取类型错误:预期的字符串或类似字节的对象