- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECMAScript 6 Set和Map数据结构
1. Set
2. WeakSet
3. Map
4 . WeakMap
Set
基本⽤法
ES6提供了新的数据结构Set 。它类似于数组,但是成员的值都是唯⼀的,没有重复的
值。
Set本⾝是⼀个构 函数,⽤来⽣成Set数据结构。
var s = new Set();
[2, 3, 5, 4, 5, 2, 2].map(x = s.add(x));
for (let i of s)
console.log(i);
}
// 2 3 5 4
上⾯代码通过add⽅法向Set结构加⼊成员,结果表明Set结构不会添加重复的值。
Set函数可以接受⼀个数组 (或类似数组的对象)作为参数,⽤来初始化。
// 例⼀
var set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
// 例⼆
var items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5
// 例三
function divs ()
return [...document.querySelectorAll(div )];
}
var set = new Set(divs());
set.size // 56
// 类似于
divs().forEach(div = set.add(div));
set.size // 56
上⾯代码中,例⼀和例⼆都是Set函数接受数组作为参数,例三是接受类似数组的对
象作为参数。
上⾯代码中,也展⽰了⼀种去除数组重复成员的⽅法。
// 去除数组的重复成员
[...new Set(array)]
向Set加⼊值的时候,不会发⽣类型转换,所以5和5是两个不同的值。Set 内部判断
两个值是否不同,使⽤的算法叫做“Same-value equality” ,它类似于精确相等运算符
(===),主要的区别是NaN等于⾃⾝,⽽精确相等运算符认为NaN不等于⾃⾝。
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set NaN}
上⾯代码向Set实例添加了两个NaN,但是只能加⼊⼀个。这表明,在Set 内部,两
个NaN是相等。
另外,两个对象总是不相等的。
let set = new Set();
set.add( });
set.size // 1
set.add( });
set.size // 2
上⾯代码表⽰,由于两个空对象不相等,所以它们被视为两个值。
Set实例的属性和⽅法
Set结构的实例有以下属性。
Stotype.constructor:构 函数,默认就是Set函数。
Stotype.size:返回Set实例的成员总数。
Set实例的⽅法分为两⼤类:操作⽅法 (⽤于操作数据)和遍历⽅法 (⽤于遍历成
员)。下⾯先介绍四个操作⽅法。
add(value):添加某个值,返回Set结构本⾝。
delete(value):删除某个值,返回⼀个布尔值,表⽰删除是否成功。
has(value):返回⼀个布尔值,表⽰该值是否为Set的成员。
clear():清除所有成员,没有返回值。
上⾯这些属性和⽅法的实例如下。
s.add(1).add(2).add(2);
// 注意2被加⼊了两次
s.size // 2
s.has(1) // true
s.has(2) // true
s.has(3) // false
s.delete(2);
s.has(2) // false
下⾯是⼀个对⽐,看看在判断是否包括⼀个键上⾯,Object结构和Set结构的写法
不同。
// 对象的写法
var properties =
width: 1,
height: 1
};
if (properties[someName])
// do something
}
// Set的写法
var properties = new Set();
properties.add(width);
properties.add(height);
if (properties.has(someName))
// do something
}
您可能关注的文档
- 微型计算机基本系统-计算机基础操作课件.ppt
- 微型计算机技术和应用习题答案.doc
- 微型计算机接口技术和应用课后习题答案__第四版____刘乐善.doc
- DMA理论知识和实例讲解.doc
- DMB常用缩略语全称及中英文对照.pdf
- DNA计算研究的现状及展望.pdf
- DNA条形码识别VI.基于微型DNA条形码.pdf
- DOS和BIOS调用.ppt
- 微型计算机系统及接口:CH6-1.ppt
- DoS及DD0S技术详解.pdf
- 2025年辽宁省辽阳市单招职业适应性测试题库及答案一套.docx
- 2025年荆州职业技术学院单招职业适应性测试题库汇编.docx
- 2025年西安培华学院单招职业倾向性测试题库新版.docx
- 2025年西安明德理工学院单招职业适应性测试题库及答案一套.docx
- 2025年辽宁轻工职业学院单招职业技能测试题库必威体育精装版.docx
- 2025年襄阳职业技术学院单招职业适应性测试题库一套.docx
- 2025年西安医学高等专科学校单招职业技能测试题库1套.docx
- 2025年资阳环境科技职业学院单招职业倾向性测试题库及答案1套.docx
- 2025年西安交通工程学院单招职业倾向性测试题库及答案一套.docx
- 2025年郑州黄河护理职业学院单招职业倾向性测试题库完美版.docx
最近下载
- 2024年浙江嘉兴桐乡市水务集团限公司招聘10人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 粤教粤科版(2023秋) 三年级下册4.22洪涝与干旱 教案.docx
- 《GBT16823.1-1997-螺纹紧固件应力截面积和承载面积》.pdf
- 工业机器人系统操作员(三级-高级)-题库有答案.docx
- 水务集团招聘笔试题目 .pdf VIP
- 公路装配式钢筋混凝土箱涵设计施工技术规程.pdf
- 课题申报参考:人际情绪调节视角下研究生教育导学关系重构与优化.docx
- 起毛机中文说明书.pdf VIP
- 《土木工程施工》课程习题集(含答案).pdf VIP
- RBA冲突矿产报告模板(CMRT)填写指南(2020年6.0版)30.pdf
文档评论(0)