首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >immutable.js:地图对赛克

immutable.js:地图对赛克
EN

Stack Overflow用户
提问于 2016-09-14 11:46:09
回答 1查看 1.4K关注 0票数 1

在Immutable.js中,Map和Seq有什么区别?你能提供一个例子来说明两者之间的区别吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-14 22:45:17

不可变的Map是由(key, value)对组成的无序Iterable.Keyed

代码语言:javascript
复制
// 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()等。它还可以转换成其他不可变的数据类型。你可以看到所有这些方法的文档。

不可变的Seq是一个可迭代的值序列,不需要有底层的数据结构。这是与Map的第一个主要区别,您可以在它们的定义中看到这一点:

class Map<K, V> extends Collection.Keyed<K, V>

同时:

class Seq<K, V> extends Iterable<K, V>

从入门开始,我们可以看到Seq没有键值,这与Map有很大的不同。另一个主要区别是不能从Seq结构中追加、更新或删除元素。

此外,引用李拜伦的话:

Seq是一种延迟的操作表示。您可以将其看作是一个非常轻的容器,包含以前的Iterable和一些要应用的操作(map、filter等),只有在需要时才会应用该操作来获得值。Seq本身不存储任何值。

因为Seq是轻量级的,所以它对于某些逻辑链来说是相当有性能的。文档还注意到,它通常用于向JavaScript对象提供丰富的集合API。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39489630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档