美文网首页
2022-04-29 JavaScript基础学习 - 5

2022-04-29 JavaScript基础学习 - 5

作者: 网恋被骗二块二 | 来源:发表于2022-05-02 11:45 被阅读0次

Map

ECMAScript 6以前,在JavaScript中实现“键/值”式存储可以使用Object 来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。作为 ECMAScript 6 的新增特性,Map是一种新的集合类型,为这门语言带来了真正的键/值存储机制。Map的大多数特性都可以通过Object类型实现,但二者之间还是存在一些细微的差异。

const m = new Map()

API

set() - 添加键值对,返回对象实例,可以链式调用
get() - 获取指定的键值对,返回具体内容
has() - 判断指定的键值对是否存在,返回 true 或 false
delete() - 删除指定的键值对
clear() - 清除该对象下所有键值对
entries() - 获取键值对的迭代器(我没记错的话,好像symbol里也有这个属性)
keys() - 获取键的迭代器
values() - 获取值的迭代器

根据 map 的描述,可以看出 map 和 object 的使用上大体类似,那么什么时候使用 map,什么时候使用 object?

  1. 内存占用
    不同浏览器的情况不同,但给定固定大小的内存,Map 大约可以比 Object 多存储50%的键/值对。
  2. 插入性能
    两者差不多,但是如果一次性涉及大量插入操作,使用 Map 的性能更佳
  3. 查找速度
    如果是内部键值对数量很多的 Object 和 Map,两者相差不多;少量键值对,Object 的速度优于 Map。但是如果一次性涉及大量查找操作,使用 Object 的性能更佳
  4. 删除性能
    对大多数浏览器引擎来说,Map 的 delete() 操作都比插入和查找更快。如果涉及大量删除操作,使用 Map 更佳

WeakMap

Map 的弱映射

Set

ECMAScript 6新增的Set是一种新集合类型,为这门语言带来集合数据结构。Set在很多方面都像是加强的Map,这是因为它们的大多数API和行为都是共有的。

API

add() - 增加值,返回操作实例,可链式调用
has() - 查询值
size - 取得元素数量
delete() - 删除指定元素
clear() - 删除所有元素

WeakSet

Set 的弱映射

迭代

在JavaScript中,计数循环就是一种最简单的迭代
循环是迭代机制的基础,这是因为它可以指定迭代的次数,以及每次迭代要执行什么操作。

生成器

生成器的形式是一个函数,函数名称前面加一个星号(*)表示它是一个生成器。
箭头函数不能用来定义生成器函数
标识生成器函数的星号不受两侧空格的影响

相关文章

网友评论

      本文标题:2022-04-29 JavaScript基础学习 - 5

      本文链接:https://www.haomeiwen.com/subject/ybqjyrtx.html