Immutable.js中Map和Seq之间的区别是什么?能否请您举例说明两者之间的区别。
答案 0 :(得分:2)
不可变的Map
是一个无序的Iterable.Keyed
,由(key, value)
对组成。
// create a Map()
const map = Map({a: 1, b: 'Hello'});
// get a value for a specific key
console.log(map.get('b'));
> "Hello"
// set a new value and assign it to a new Map()
const newMap = map.set('c', 'This is a new key/value pair');
console.log(newMap.get('c'));
> "This is a new key/value pair"
它可以访问各种方法,例如setIn()
,deleteIn()
,merge()
,map()
等。它也可以转换为其他不可变数据类型。您可以看到the docs about all of these methods.
Immutable的Seq
是一个可迭代的值序列,不需要具有底层数据结构。这是与Map
的第一个主要区别,您可以在其定义中看到这一点:
class Map<K, V> extends Collection.Keyed<K, V>
while:
class Seq<K, V> extends Iterable<K, V>
从一开始我们就可以看到Seq
没有键控值,与Map
有很大不同。另一个主要区别是您无法追加,更新或删除Seq
结构中的元素。
In addition, to quote Lee Byron:
Seq是一个惰性操作表示。您可以将其视为前一个Iterable的一个非常轻量级的容器和一些应用的操作(映射,过滤等),该操作仅在必要时才应用于获取值。 Seq本身并不存储任何值。
因为Seq
是轻量级的,所以对某些逻辑链来说可能相当高效。文档还指出,它通常用于为JavaScript Object提供丰富的集合API。