如何得到两个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
来表示这些值。
我有两个不可变映射:
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
来表示这些值。