概要
set的使用(应用:数据去重)
一、Set的方法
add() 添加元素
使用add添加基本数据类型成员,会直接去重
添加应用数据类型会全部添加,因为引用地址不相同,不算重复值
第一种:基本数据
let s1 = new Set([1, 2, 3, 4, 4, 5, ["aa", "bb"]]);
s1 .add(9)
console.log(s1 ) //[1, 2, 3, 4, 5, ["aa", "bb"],9]
第一种:应用数据类型
let s2 = new Set([1, 2, 3, 4, 4, 5, ["aa", "bb"]]);
s2.add(["aa","bb"])
console.log(s2) //[1, 2, 3, 4, 4, 5, ["aa", "bb"],["aa", "bb"]]
delete() 删除元素
- `可以直接删除数组中的值,删除应用数据类型时需要传入它的地址
第一种:删除普通值
let set = new Set([1,2,3,[4,5,6]]);
set.delete(3)
console.log(set) // [1,2,[4,5,6]]
第二种:删除应用数据类型 `当我们要删除引用数据类型的成员时,需要传入引用地址,而不能传值`
let set2 = new Set([1,2,3]);
let arr = [4,5,6]
set2.add(arr)
console.log(set2 ) //[1,2,3,[4,5,6]]
set2.delete(arr)
console.log(set2) // [1,2,3]
has() 判断是否存在某个值,返回结果为true或false
注意:判断引用值时,也需要传入引用地址,而不能传值,否则会返回false
let set = new Set(['zhangsan', [1, 2, 3]])
let arr = [7,8,9]
set.add(arr)
console.log(set.has('zhangsan'));//true
console.log(set.has([1,2,3]));//false
console.log(set.has(arr));//true
console.log(set.has('hello'));//false
size 获取长度
let set3 =new Set([1,2,3]);
console.log(set3.size) // 3
clear() 清空set集合
Set遍历成员 keys()、values()、entries()
- Set有keys()、values()、entries()方法,这三个方法都返回一个迭代器对象,可以使用for-of来遍历它们的返回值:
*Set集合的key值和value值是一样的
let set2 = new Set([{name:'kjp',age:18},{name:'haha',age:90}]);
for (let item of set2.keys()) {
console.log('姓名为:'+item.name,'年龄为:'+item.age);
//姓名为:kjp 年龄为:18
//姓名为:haha 年龄为:90
}
for (let item of set2.values()) {
console.log('姓名为:'+item.name,'年龄为:'+item.age);
//姓名为:kjp 年龄为:18
//姓名为:haha 年龄为:90
}
二、Map集合
Map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。Map 可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。
let map = new Map()
// 添加map成员
map.set('name','dog')
// 获取map成员
map.get("name")
// 删除map成员
map.delete('name')