ES6之set

1const s=new Set(); 2[2,3,4,2,3,4,5,6,2,3,3].forEach(x=>s.add(x)) 3console.log(s); 4for(let i of s){ 5console.log(i) 6} 7console.log(s.add(9)); //add(value),添加某个值,返回Set结构本身 8console.log(s.delete(2)); //删除某个值,返回一个布尔值,表示是否删除成功 9console.log(s.has(2)); //返回一个布尔值,表示该值是否为set成员 10console.log(s.clear()); //清楚所有成员,没有返回值 11console.log(s);

//总结:ES6提供的新的数据结构Set.类似于数组,但是成员的值都是唯一的。set本身是一个构造函数,用来生成Set数据结构 //上面代码通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复的值

1// 去除数组重复成员 2const list=[1,2,1,5,2,4,6,2,3,1,] 3console.log([...new Set(list)]);
1// 去除字符串里面的重复字符 2 3const str='gdfgdgdgarwefgsfsdf'; 4console.log([...new Set(str)]) //["g", "d", "f", "a", "r", "w", "e", "s"] 5console.log([...new Set(str)].join('')) //gdfarwes

//Object和Set在判断是否包含一个键上的写法不同

1//对象的写法 2const properties={ 3'weight':1, 4'height':1 5}; 6if(properties['weight']){ 7//...... 8} 9//Set的写法 10const properties1=new Set(); 11properties1.add('width') 12properties1.add('height') 13if(properties1.has('weight')){ 14//..... 15} 16 17 18//这又提供了一种数组去重的方法 19function dedupe(array){ 20return Array.from(new Set(array)) 21} 22dedupe([11,1,2,3,2,3,4,5,3])
1//Array.from方法可以将Set结构转为数组 2const items=new Set([1,2,3,4,5,4,3,2]) 3console.log(items); //Set结构是entries键值对 4const array=Array.from(items) 5console.log(array); [1,2,3,4,5]
1// 遍历操作---四个 2let set=new Set(['red','green','blue']) 3for(let item of set.keys()){ 4console.log(item); //red green blue 5} 6for(let item of set.values()){ 7console.log(item); //red green blue 8} 9for(let item of set.entries()){ 10console.log(item); //(2) ["red", "red"] (2) ["green", "green"] (2) ["blue", "blue"] 11}

// 总结---因为Set结构没有键名,只有键值,或者说键名和键值一样,所以keys和values方法的行为完全一致 // Set结构的实力默认可遍历,它的默认遍历器生成函数就是它的values方法

1//forEach() 2let aa=new Set([1,24,9]) 3set.forEach((value,key)=>console.log(key +':' +value)) 4//11 5//24:24 6//9:9

//遍历

1// 拓展运算符(...)内部使用for...of 循环,所以也可以用于Set结构;map 和filter 也可间接用于Set 2// 去除数组重复成员 3const list1=[1,2,1,5,2,4,6,2,3,1,] 4console.log([...new Set(list1)]); 5//map 6let bb=new Set([1,2,3]) 7bb =new Set([...bb].map(x=>x*2)) 8console.log(bb); //返回Set结构 9//filter 10let cc=new Set([1,6,10]) 11cc= new Set([...cc].filter(x=>(x%2)==0)) 12console.log(cc);

//注意:向Set加入值得时候,不会发生类型转变,所以5和'5'是两个不同的值;

// Set内部判断两个值是否相同,使用的算法类似于全等于运算符,主要的区别是向Set加入值时认为NaN等于自身,而全等于不认为。 // 两个空对象也会被视为两个值

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )