- ES6 教程
- ES6 - 主页
- ES6 - 概述
- ES6 - 环境
- ES6 - 语法
- ES6 - 变量
- ES6 - 运算符
- ES6 - 决策
- ES6 - 循环
- ES6 - 函数
- ES6 - 事件
- ES6 - Cookie
- ES6 - 页面重定向
- ES6 - 对话框
- ES6 - 无效关键字
- ES6 - 页面打印
- ES6 - 对象
- ES6 - 数字
- ES6 - 布尔值
- ES6 - 字符串
- ES6 - 符号
- ES6 - 新的字符串方法
- ES6 - 数组
- ES6 - 日期
- ES6 - 数学
- ES6 - 正则表达式
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 类
- ES6 - 地图和集合
- ES6 - 承诺
- ES6 - 模块
- ES6 - 错误处理
- ES6 - 对象扩展
- ES6 - 反射 API
- ES6 - 代理 API
- ES6 - 验证
- ES6 - 动画
- ES6 - 多媒体
- ES6 - 调试
- ES6 - 图像映射
- ES6 - 浏览器
- ES7 - 新特性
- ES8 - 新特性
- ES9 - 新特性
- ES6 有用资源
- ES6 - 快速指南
- ES6 - 有用的资源
- ES6 - 讨论
ES6 - 地图和集合
ES6 引入了两种新的数据结构——映射和集合。让我们详细了解一下它们。
地图
映射是键值对的有序集合。地图与物体类似。但是,地图和对象之间存在一些差异。下面列出了这些 -
先生编号 | 目的 | 地图 |
---|---|---|
1 | 键不能是对象类型 | 键可以是任何类型 |
2 | 钥匙未订购 | 钥匙已订购 |
3 | 不可迭代 | 可迭代的 |
句法
Map 的语法如下 -
let map = new Map([iterable]) let map = new Map()
例子
以下示例使用可迭代构造函数创建一个映射 -
<script> let andy = {ename:"Andrel"}, varun = {ename:"Varun"}, prijin = {ename:"Prijin"} let empJobs = new Map([ [andy,'Software Architect'], [varun,'Developer']] ); console.log(empJobs) </script>
上述代码的输出如下所示 -
{{…} => "Software Architect", {…} => "Developer"}
检查地图的大小
size 属性可用于确定存储在映射中的值的数量。
句法
检查地图大小的语法如下 -
map_name.size
例子
<script> let daysMap = new Map(); daysMap.set('1', 'Monday'); daysMap.set('2', 'Tuesday'); daysMap.set('3', 'Wednesday'); console.log(daysMap.size); </script>
上述代码的输出如下所示 -
3
以下是一些可用于操作地图的常用方法 -
先生编号 | 对象和地图 |
---|---|
1 |
设置(键,值)
将键和值添加到映射 |
2 |
获取(键)
如果键匹配则返回值 |
3 |
有(键)
如果具有指定键的元素存在,则返回 true;否则返回 false |
4 |
键()
返回一个迭代器,其中包含映射对象中每个元素的键 |
5 |
值()
返回一个迭代器,其中包含映射对象中每个元素的值 |
6 |
条目()
返回一个迭代器,其中包含 Map 中每个元素的键值对 |
7 |
删除(键)
从 Map 对象中删除指定元素 |
弱映射
WeakMap 是map 的一个小子集。键是弱引用的,因此它只能是非原始的。如果没有对对象键的引用,它将受到垃圾回收的影响。
- 不可迭代
- 每个键都是对象类型
如果键没有引用,WeakMap 将允许垃圾回收。
句法
WeakMap 的语法如下所示:
new WeakMap([iterable])
实施例1
<script> let emp = new WeakMap(); emp.set(10,'Sachin');// TypeError as keys should be object </script>
实施例2
<script> let empMap = new WeakMap(); // emp.set(10,'Sachin');// Error as keys should be object let e1= {ename:'Kiran'}, e2 = {ename:'Kannan'}, e3 = {ename:'Mohtashim'} empMap.set(e1,1001); empMap.set(e2,1002); empMap.set(e3,1003); console.log(empMap) console.log(empMap.get(e2)) console.log(empMap.has(e2)) empMap.delete(e1) console.log(empMap) </script>
上述代码的输出如下 -
{{…} => 1002, {…} => 1003, {…} => 1001} 1002 true {{…} => 1002, {…} => 1003}
放
集合是唯一值的无序集合。该数据结构可以包含原始类型和对象类型的值。
句法
Set 的语法如下 -
new Set([iterable]) new Set()
例子
<script> let names = new Set(['A','B','C','D']); console.log(names) </script>
上述代码的输出如下 -
{"A", "B", "C", "D"}
检查集合的大小
Set对象的size属性可用于查询Set中元素的数量。
句法
检查集合大小的语法如下 -
set.size
例子
<script> let names = new Set(['A','B','C','D']); console.log(names.size) </script>
上述代码的输出如下 -
4
迭代集合
我们可以使用forEach和for..of循环来迭代 Set。如下例所示 -
例子
<script> let names= new Set(['A','B','C','D']); //iterate using forEach console.log('forEach') names.forEach(n=>console.log(n)) console.log('for of..') //iterate using for..of for(let n of names){ console.log(n) } </script>
上述代码的输出如下 -
forEach A B C D for of.. A B C D
以下方法可用于操作集合 -
先生编号 | 对象和地图 |
---|---|
1 |
添加(元素)
向 Set 添加一个元素 |
2 |
有(元素)
如果找到元素则返回 true;否则返回 false |
3 |
删除(元素)
从集合中删除特定元素 |
4 |
清除()
清除集合中的所有元素 |
弱集
Weakset 弱保存对象,这意味着存储在 WeakSet 中的对象如果没有被引用,就会受到垃圾回收的影响。WeakSet 不可迭代,并且没有get方法。
<script> let e1 = {ename:'A'} let e2 ={ename:'B'} let e3 ={ename:'C'} let emps = new WeakSet(); emps.add(e1); emps.add(e2) .add(e3); console.log(emps) console.log(emps.has(e1)) emps.delete(e1); console.log(emps) </script>
上述代码的输出如下 -
WeakSet {{…}, {…}, {…}} true WeakSet {{…}, {…}}