ES6新增Set、Map两种数据结构
创作时间:
作者:
@小白创作中心
ES6新增Set、Map两种数据结构
引用
51CTO
1.
https://blog.51cto.com/u_17151987/12672078
ES6新增了Set和Map两种数据结构,它们分别类似于集合和字典。本文将详细介绍这两种数据结构的使用方法,以及相关的WeakSet和WeakMap。
Set
Set是一种集合数据结构,其成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。
增删改查
Set的实例提供了以下方法:
add():添加某个值,返回Set结构本身。如果添加实例中已经存在的元素,Set不会进行处理添加。delete():删除某个值,返回一个布尔值,表示删除是否成功。has():返回一个布尔值,判断该值是否为Set的成员。clear():清除所有成员,没有返回值。
遍历
Set实例提供了以下遍历方法:
keys():返回键名的遍历器values():返回键值的遍历器entries():返回键值对的遍历器forEach():使用回调函数遍历每个成员
Set的遍历顺序就是插入顺序。keys方法、values方法、entries方法返回的都是遍历器对象。
示例代码
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.values()) {
console.log(item);
}
// red
// green
// blue
for (let item of set.entries()) {
console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
let set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
Map
Map类型是键值对的有序列表,而键和值都可以是任意类型。Map本身是一个构造函数,用来生成Map数据结构。
增删改查
Map结构的实例提供了以下属性和操作方法:
size:返回Map结构的成员总数。set():设置键名key对应的键值为value,然后返回整个Map结构。get():读取key对应的键值,如果找不到key,返回undefined。has():返回一个布尔值,表示某个键是否在当前Map对象之中。delete():删除某个键,返回true。如果删除失败,返回false。clear():清除所有成员,没有返回值。
遍历
Map结构原生提供三个遍历器生成函数和一个遍历方法:
keys():返回键名的遍历器values():返回键值的遍历器entries():返回所有成员的遍历器forEach():遍历Map的所有成员
遍历顺序就是插入顺序。
示例代码
const map = new Map([
['F', 'no'],
['T', 'yes'],
]);
for (let key of map.keys()) {
console.log(key);
}
// "F"
// "T"
for (let value of map.values()) {
console.log(value);
}
// "no"
// "yes"
for (let item of map.entries()) {
console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"
// 或者
for (let [key, value] of map.entries()) {
console.log(key, value);
}
// "F" "no"
// "T" "yes"
// 等同于使用map.entries()
for (let [key, value] of map) {
console.log(key, value);
}
// "F" "no"
// "T" "yes"
map.forEach(function(value, key, map) {
console.log("Key: %s, Value: %s", key, value);
});
WeakSet 和 WeakMap
WeakSet
WeakSet可以接受一个具有Iterable接口的对象作为参数。在API中WeakSet与Set有两个区别:
- 没有遍历操作的API
- 没有size属性
WeakSet的成员只能是引用类型,而不能是其他类型的值。
WeakMap
WeakMap结构与Map结构类似,也是用于生成键值对的集合。在API中WeakMap与Map有两个区别:
- 没有遍历操作的API
- 没有clear清空方法
WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。WeakMap的键名所指向的对象,一旦不再需要,其所对应的WeakMap记录就会自动被移除。
参考文献
- ES6入门教程
热门推荐
贪婪的真面目:从人性弱点到社会现象的深度剖析
欧洲那么大,为什么在古代它们没有统一?
没接地线打雷灯会不会烧坏?没接地线打雷会触电吗?
如何降低信息差影响,提升信息传播准确性
公司员工请假管理制度怎么制定?
揭秘贪婪心理:为什么我们总是无法满足?
道家揭秘:“玄关一窍”是什么?如何“开窍”?
解决烧机油问题的有效方法是什么?这种解决技巧如何保障发动机健康?
掌握这四个分镜技巧,让你的影片告别“烂片”既视感
电脑无法开机?从有经验的技术员角度来一步步教你解决
创造属于自己的表情包:简单步骤与技巧分享让交流更生动有趣
危局or转机?旅游上市公司的重整生死局
儿童常用药物的正确服用时间
深圳租房攻略:哪里租房更划算
以价值观为核心,探讨现代社会的多元与统一
公平竞争与情感关系:如何在生活中寻找和谐的平衡?
第一批回家过年的人已经堵路上了,预计春运期间高速车流量创历史新高
最会吃的上海人,都涌去了3.9分餐厅
床头朝哪个方向是正确的?科学、风水与个人习惯的综合考量
杨振宁是全世界最伟大的科学家之一,看看他到底有哪些成就?
聊聊与校园霸凌相关的心理话题
SketchUp教程 | 如何在SketchUp草图大师中进行打印操作?
有效传达信息的PPT制作技巧:如何突出关键要素?
3款备受猫咪喜爱的玩具,给猫咪一个有趣的体验!
处理钙化根管的几点临床提示
烂板出牛股现象背后的原因是什么?这种现象能带来怎样的启示?
病历书写的时间要求
外包公司拖欠工资怎么办
中药材市场现状:乱象整治效果不佳
加号的多重意义:从数学运算到生活中的积极连接与合作