ES6学习之路7----set数据结构
来源:互联网 发布:js怎么判断日期相等 编辑:程序博客网 时间:2024/05/29 18:11
什么是set
ES6提供了数据结构Set。类似于数组,但是没有重复值。
1.Set本身是一个构造函数,用来生成Set数据结构
对set数据结构进行操作的方法
- add(value):添加某个值,返回Set结构本身。
- delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
- has(value):返回一个布尔值,表示该值是否为Set的成员。
- clear():清除所有成员,没有返回值。
let set = new Set();let arr = [1,2,3,4,5,6,5,4,7,3];//利用add方法将每个值添加到set中arr.forEach(current => set.add(current));console.log(set);//{1, 2, 3, 4, 5, 6, 7}//循环set,查看每个成员for(let val of set){console.log(val);}//1 2 3 4 5 6 7//利用delete删除5,再查看setconsole.log(set.delete(5));//trueconsole.log(set);//{1, 2, 3, 4, 6, 7}//删除8,由于不存在,所以删除不成功,返回falseconsole.log(set.delete(8));//false利用has判断成员是否存在console.log(set.has(4));//trueconsole.log(set.has(9));//false利用clear清除所有成员set.clear();console.log(set);//Set(0) {}
对set数据结构进行操作的属性size
set数据结构能够用size属性访问数据结构的成员总数,而且set数据结构可以接受一个数组(或者类数组对象)作为参数,用来初始化。
let set = new Set([1,2,3,4,5,6]); console.log(set.size);//6
实际应用:利用set数据结构的没有重复值性质,对数组去重。
//数组去重:let arr = [1,1,1,2,2,3,4,5,6,5,6];console.log([...new Set(arr)]);//[1, 2, 3, 4, 5, 6]console.log(Array.from(new Set(arr)));//[1, 2, 3, 4, 5, 6]//使用 Set 实现并集(Union)、交集(Intersect)和差集(Difference)let a = new Set([1, 2, 3, 4]);let b = new Set([5, 4, 3, 2]);// 并集let union = new Set([...a, ...b]);console.log(union);// Set {1, 2, 3, 4, 5}// 交集let intersect = new Set([...a].filter(x => b.has(x)));console.log(intersect);// set {2, 3, 4}// 差集let difference = new Set([...a].filter(x => !b.has(x)));console.log(difference);// Set {1}
将set数据结构转化为数组的方法:
- 利用扩展运算符(…)———–[…new Set(arr)];
- 利用Array.from()方法——–Array.from(new Set(arr));
- 利用for…of…循环push。
Set 加入值的时候,不会发生类型转换,所以5和”5”是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。
let set = new Set();set.add(5);set.add("5");console.log(set);//Set(2) {5, "5"}set.add(NaN);set.add(NaN);console.log(set);//Set(3) {5, "5", NaN}set.add({});set.add({});console.log(set);//Set(5) {5, "5", NaN, {…}, {…}}
对set数据结构进行遍历的方法
- keys():返回键名的遍历器
- values():返回键值的遍历器
- entries():返回键值对的遍历器
- forEach():使用回调函数遍历每个成员
let set0 = new Set([1,2,3,4,3,5,4,6,5,7,4]);//keys()for(let key of set0.keys()){console.log(key)}//1 2 3 4 5 6 7//values()for(let key of set0.values()){console.log(key)}//1 2 3 4 5 6 7//entries()for(let key of set0.entries()){console.log(key)}//[1,1] [2,2] [3,3] [4,4] [5,5] [6,6] [7,7]//forEach()set0.forEach(val => console.log(val));//1 2 3 4 5 6 7
总结:
- set数据结构配合扩展运算符或者Array.from()方法能够去重;
- set数据结构实例化方法和属性:(add有返回值、delete有返回值、has有返回值、clear没有返回值)对其进行操作,size获取数据结构的成员总量;
- set数据结构的遍历方法keys、values、entries、forEach、map、filter、for…of…。
- 向set数据结构添加值时,采用的算法是“Same-value equality”,类似于精确相等运算符,注意“类似于”,区别就在于NaN对象在“Same-value equality”算法是相等的(NaN===NaN//false)。
- 添加5和“5”或者{}和{}“Same-value equality”算法不相等。
- “Same-value equality”算法除了NaN,其他都遵循精确相等运算符(===)。
阅读全文
0 0
- ES6学习之路7----set数据结构
- ES6学习之路~~数据结构:set和map
- ES6之SET数据结构
- ES6学习之路(六) Set&WeakSet
- ES6学习之路8----WeakSet数据结构
- ES6学习之路9----Map数据结构
- es6学习笔记Set和WeakSet数据结构
- 3、数据结构Set —ES6学习笔记
- ES6之Set和Map数据结构
- ES6的Set数据结构
- ES6--数据结构Set
- js-es6-set数据结构
- ES6 set数据结构
- 学习笔记:ES6之Set-map
- 【ES6学习】— (7)Set、Map数据结构与Iterator遍历器
- ES6学习笔记(五)Set和Map数据结构
- ES6学习10章:Set和Map数据结构
- es6 javascript的set数据结构
- 坐拥10亿用户的产品大牛们都被难住了?
- 利用指向类成员函数的指针数组,实现更加隐蔽的接口
- 中文乱码问题
- 机器学习算法
- quaggaJS 识别条形码
- ES6学习之路7----set数据结构
- 把数据list分割成list/len组,每组len条数据
- VS提示图标的含义
- 1 dubbo源码之启动时检查
- Attr、Style和Theme
- ADB命令与调试文件安装拷贝
- 第一个ssm小项目
- 初识 VxLAN
- spring中声明式事务管理控制介绍以及使用XML方式实现