js中Set的常见用法

Es6提供了一种新的数据结构Set,类似于数组,但Set里面的值不重复,也就是说值唯一。

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

1.Set 本身是一个构造函数,用来生成Set数据结构:

        const s1 = new Set();
        console.log(s1); // Set(0)
        

2.Set可通过size计算内部元素的个数,Set可与Array相互转换:

// Array ['a', 'b'] 转 Set 
const s2 = new Set(['a', 'b']); 
console.log(s2); // Set(2)
console.log(s2.size); // 2

const s3 = new Set(['a', 'a', 'b', 'b']);
console.log(s3.size); // 2
console.log(s3); //Set(2)

// 用...操作符,将 Set 转 Array
const ary = [...s3];
console.log(ary); // Array(2)

其中s3刚开始给了它['a', 'a', 'b', 'b'],但打印出来的却只有2个,说明Set结构中不能有相同的成员值,如果有,new Set()中的值会去重。

3.Set中常用的方法:

    1.向set结构中添加值 使用  add  方法.

    2.从set结构中删除值 用到的方法是  delete  ,返回值为布尔值.

    3.判断某一个值是否是set数据结构中的成员 使用  has.

    4.清空set数据结构中的值使用  clear  方法.

        const s4 = new Set();
		// 向set结构中添加值 使用add方法
		s4.add('a').add('b');
		console.log(s4.size) // 2

		// 从set结构中删除值 用到的方法是delete  有返回值为布尔值
        // s4 = Set{'a', 'b'}
		const r1 = s4.delete('c');
		console.log(s4.size) // 2
		console.log(r1); // false     表示删除失败

		// 判断某一个值是否是set数据结构中的成员 使用has
		const r2 = s4.has('d');
		console.log(r2) // false    表示没有d这个成员

		// 清空set数据结构中的值 使用clear方法
		s4.clear();
		console.log(s4.size); // 0

4.迭代Set:

    1.forEach

        // 遍历set数据结构 从中取值
		const s5 = new Set(['a', 'b', 'c']);
		s5.forEach(value => {
			console.log(value); // 在控制台中依次打印a, b, c
		})

    2.for  (item of mySet/...)

     keys():返回键名;

     values(): 返回键值;

     entries(): 返回键值对

     键名=键值

let mySet = new Set([1, 2, 3]);
 for(let item of mySet) {
    console.log(item);
 }
 // 1
 // 2
 // 3

 // 返回键名
 for(let item of mySet.keys()) {
   console.log(item); 
 }
 // 1
 // 2
 // 3
  
 // 返回键值
 for(let item of mySet.values()) {
   console.log(item); 
 }
 // 1
 // 2
 // 3

 // mySet 键名=键值
  
 // 返回键值对
 for(let item of mySet.entries()){
   console.log(item); 
 }
 // [1, 1] 
 // [2, 2]
 // [3, 3]

5.Set 中的特殊值:

Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:

    1.+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;

    2.undefined 与 undefined 是恒等的,所以不重复;

    3.NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值