javaScript之引用类型Set

一、作用

Set的作用

Set主要用于存储唯一的值,无论这个值是原始类型还是对象引用。Set中的元素具有唯一性,不允许存储相同的元素。因此,Set的主要作用是去除数组中的重复元素。它的创建初衷是为了提供一种更高效、更简洁的方式来处理需要唯一性的数据集合。
let arr_2 = [1, 1, 2, 3, 4, 4, 3, 5];
console.log(Array.form(new Set(arr_2))); // 1, 2, 3, 4, 5  利用Set特性去重
console.log([...new Set(arr_2)]);// 利用扩展运算符去重

在具体的使用场景中当需要处理唯一性的数据时,可以使用Set来存储这些数据,并通过其提供的各种方法来操作这些数据。

二、Set的方法

1、add添加成员

// Set.add
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
map.set(key, value)   设置一对键值对
let map = new Map([[1, 2, 3], ['name', 'zs']])
map.set(4, 5); // {1 => 2} {'name' => 'zs'} {4 => 5}

2、size属性 返回成员的个数

let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4

3、delete属性 删除成员

//成功为true 失败为false
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
console.log(set_1.delete(2));  // true
console.log(set_1); // 1 3 4

4、clear方法 清除所有成员

let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
set.clear()
console.log(set); // Set(0)

5、has方法

// 判断Set机构中是否含有指定的值
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
//set.clear()
//console.log(set); // Set(0)
console.log(set.has(4)); // true

6、enteries方法

// 返回一个键值对的遍历器 (键与值的值相同)
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
//set.clear()
//console.log(set); // Set(0)
console.log(set.has(4)); // true
for (let [key, value] of set.entries()) {
	console.log(`${key}:${value}`); // 1:1 3:3 4:4
}

7、keys和values方法

// 返回一个键值对的遍历器 (键与值的值相同)
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
//set.clear()
//console.log(set); // Set(0)
console.log(set.has(4)); // true
for (let [key, value] of set.entries()) {
	console.log(`${key}:${value}`); // 1:1 3:3 4:4
}
for (let key of set.keys()) {
	console.log(key);
}
for (let value of set.values()) {
	console.log(value);
}

8、forEach

// 返回一个键值对的遍历器 (键与值的值相同)
let set = new Set([1, 2, 3]) 
set.add(4);  // 1 2 3 4
console.log(set.size); // 4
//set.clear()
//console.log(set); // Set(0)
console.log(set.has(4)); // true
for (let [key, value] of set.entries()) {
	console.log(`${key}:${value}`); // 1:1 3:3 4:4
}
for (let key of set.keys()) {
	console.log(key);
}
for (let value of set.values()) {
	console.log(value);
}
set.forEach((itme, value) => {
     console.log(itme);
})

伴生结构-WeakSet

其成员必须是引用类型的值

let weak = new WeakSet([{name: 'zs'}, [1, 2, 3], set]);
console.log(weak);
// 由于本人过懒,就不在一 一举例了。

WeakSet与Set结构的区别
相同点:也提供 add、delete、has方法,作用与Set结构一致
不同点:不可遍历,没有size属性,entires keys values forEach没有

结语

总的来说,Set创建初衷便是为了提供更高效、更灵活的方式来处理不同的数据结构和操作需求。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值