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创建初衷便是为了提供更高效、更灵活的方式来处理不同的数据结构和操作需求。