如何得到两个Immutable.js Map之间的差异?

How to get the difference between two Immutable.js Map?

我有两个不可变映射:

const first_map = Map({a: 1, b: 2)}
const second_map = Map({a: 1, b: 3)}

如何取差? 我应该得到:

Map({b: 3}) 

一种可能的方法是在第二张地图上使用 Map.filter() - 实际上是 Collection.Keyed.filter() - 有一个条件:对于给定的元素这个 Map,另一个 Map 中不应该有具有相同键的元素。例如:

const Map = Immutable.Map;

const first_map = Map({a: 1, b: 2, c: 4});
const second_map = Map({a: 1, b: 3, d: 5});

const diff = second_map.filter((v, k) => first_map.get(k) !== v);

console.log(diff.toString()); // Map { "b": 3, "d": 5 }
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>

严格来说,应该首先检查 has - 如果没有这样的键,则为 Map.get(key) returns undefined,但对于包含 [=14= 的 Map 可能存在有效情况].尽管如此,我还是鼓励使用 null 来表示这些值。