【ES6】Set 集合

一、基本用法

  • Set 是一种新集合类型,为 JavaScript 这门语言带来了集合数据结构
  • Set在很多方面都像是加强的 Map ,这是因为他们的大多数API 和行为都是共有的
  • 它类似于数组,但是成员的值都是唯一的,没有重复的值。
  • 被称之为:字典数组
  • 语法:
// 创造一个空集合
const s = new Set()
/*
	可以在实例化的时候,传递一个数组
	数组里面的每一个数据就是 set 数据类型的每一个数据
*/

  • 没有索引
const s = new Set(['hello','world','你好','世界']);
console.log(s[1]); // undefined
  • 不允许存储重复数据
const s = new Set(['hello','world','你好','世界','hello','world']);
console.log(s);	// {"hello", "world", "你好", "世界"}
  • 实现数组去重
const arr = [1,2,3,2,1];
const res = new Set(arr);
console.log(res);   //{1, 2, 3},是一个集合
console.log([...res]);  //[1, 2, 3],转换成数组

二、常用方法

1. 添加:add()

  • 语法:Set数据类型.add(要添加的数据);
const s = new Set(['hello','world','你好','世界']);
s.add(true);    // 添加一个布尔值
console.log(s); // {"hello", "world", "你好", "世界", true}
  • add()返回集合的实例,所以可以将多个添加操作连缀起来,包括初始化
const s = new Set().add("val1");
s.add("val2").add("val3")
console.log(s.size);		// 3

2. 删除:delete()

  • 语法:Set数据类型.delete(要删除的数据);
const s = new Set(['hello','world','你好','世界']);
s.delete('世界');    // 删除‘世界’这个值
console.log(s); // {"hello", "world", "你好", true}
  • delete()返回一个布尔值,表示集合中是否存在要删除的值
const s = new Set().add("val1");

console.log(s.size);		// 1
// 集合里有这个值
console.log(s.delete("val1"));		// true
// 集合里没这个值
console.log(s.delete("val1"));		// false

3. 清除:clear()

  • 语法:Set数据类型.clear();
  • 作用:清除所有数据
const s = new Set(['hello','world','你好','世界']);
s.clear();    // 清除数据
console.log(s); // {}

4. 遍历:forEach()

  • 语法:Set数据类型.forEach(function(item,item,set){});
const s = new Set(['hello','world','你好','世界']);
s.forEach(function(item,it,set){
    console.log(item,'=>',it,'=>',set);
})
/*
打印结果:
hello => hello => {"hello", "world", "你好", "世界"}
world => world => {"hello", "world", "你好", "世界"}
你好 => 你好 => {"hello", "world", "你好", "世界"}
世界 => 世界 => {"hello", "world", "你好", "世界"}
*/

5. 遍历:for...of

  • 语法:for(let value of Set数据类型){};
  • set数据结构使用不了for或for…in遍历
const s = new Set(['hello','world','你好','世界']);
for(let value of s){
    console.log(value);
}
/*
打印结果:
hello
world
你好
世界
*/

6. 判断:has()

  • 语法:Set数据类型.has(要判断的数据);
  • 返回值:你要判断的数据是不是存在true/false
const s = new Set(['hello','world','你好','世界']);
// 判断 ‘你好’ 这个值是否存在
console.log(s.has('你好')); // true

7. 长度:size

  • 语法:Set数据类型.size;
  • 作用:获取 set 数据结构里面有多少条数据
  • set数据结构是没有length属性的
const s = new Set(['hello','world','你好','世界']);
console.log(s.size);    // 4
console.log(s.length);  // undefined
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗不甘坠落的流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值