首页 > 解决方案 > Map.entrySeq 的不可变顺序

问题描述

我有以下代码

[array with keys].reduce((acc, key) => acc.set(key, 1), Map());

Map 是 immutablejs Map 而不是 js Map。当我在它上面调用 Map.entrySeq() 时,它总是给我在 reduce 中执行 set() 的相同顺序。

我真的可以按这个顺序吗?

标签: immutable.js

解决方案


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);
});

推荐阅读