3、数据结构Set —ES6学习笔记

集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中。

特点:key 和 value 相同,没有重复的 value。

ES6 提供了数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

1 如何创建一个 Set

//Set是一个构造函数
const s = new Set([1, 2, 3]);
console.log(s); //{1,2,3}

2 Set 类的属性

console.log(s.size); // 3 说明s里面有三个数据

了解了Set的基本属性之后,我们在看看Set类的基本方法


3 Set 类的方法

1 set.add(value) 添加一个数据,返回Set结构本身。
也就是说除了像上面一样直接指定数据意外,我们还可以利用这种方法动态的向数据结构中添加一个值
并且支持链式的添加

s.add('a').add('b').add('c');
console.log(s);//{1,2,3,a,b,c}
//这个时候abc就被添加到数据结构中了

2 set.delete(value) 删除指定数据,返回一个布尔值,表示删除是否成功。
如果删除成功了就返回一个true,否则就返回false

console.log(s.delete('a')); //true 表示删除成功
console.log(s);             //{1,2,3,b,c} 可以发现a已经不存在了

console.log(s.delete('a')); //在此之前a已经被删除了,这里在删除就不存在了 返回false

3 set.has(value) 判断该值是否为Set的成员,反回一个布尔值。
如果有就返回true,否则就返回false。

console.log(s.has('a')); // false 因为a在上面已经被删除掉了
console.log(s.has(1)); // true

4 set.clear() 清除所有数据,没有返回值。

s.clear();
console.log(s); //我们发现所有的数据都被清空了

接下来这几种方法都是用来遍历数据结构的
由于Set是一个集合,那么集合的键和值是相同的,
所以keys() 返回键名的遍历器和values() 返回键值的遍历器他们的返回结果是相同

5 keys() 返回键名的遍历器

console.log(s.keys());//{1,2,3,"b","c"}

6 values() 返回键值的遍历器

console.log(s.values());//{1,2,3,"b","c"}

7 entries() 返回键值对的遍历器

console.log(s.entries());//{[1,1],[2,2],[3,3],["b","b"],["c","c"]}
//这样打印出来就是键值对
//同时键和值是相同的,我也就发现了集合数据结构的特点

8 forEach() 使用回调函数遍历每个成员
这里的forEach()和数组的forEach()是非常类似的,都是用来遍历数据结构的
这个方法的参数是一个处理函数,这个处理函数同时又能接收三个参数

// 第一个参数是键值 value
// 第二个参数是键名 key
// 第三个参数就是数据的本身 set

// 在函数中我们可以对value和key进行遍历

s.forEach(function (value, key, set){
  console.log(value + ' zhang');
});
console.log(s);//{1,2,3,"b","c"} 数据结构本身并没有发生变化

//我们知道这里面已经有了{1,2,3,"b","c"},接着我再向s里面添加相同的数据
s.add(1);
console.log(s);//我们发现还是{1,2,3,"b","c"}  后面添加的1并没有被添加进去

这也就说明了Set这种数据结构是不允许有重复的数据的

应用:使用Set()方法给数组去重

var arr = [1,1,'1','1',null,null,undefined,undefined,NaN,NaN];
console.log(new Set(arr));//1,"1",null,undefined,NaN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值