Set:
本身就是一个构造方法,可以直接new一个set类型的对象,也可以在new的时候传一个数组进去,生成一个该数组去重后的set对象。Set类型有点类似于数组,区别于数组的是,他里面的元素是不能重复的
eg:
let a = new Set() // Set类型的空对象{}
let b = new Set([1,2,3,3,3]) // 值为数组去重后的set类型的对象{1,2,3}
原型方法:
[1 ] add:往set对象里面添加一个元素,并且返回Set对象本身,由于可以返回本身,所以支持链式调用
eg:
let testSet = new Set()
testSet.add(1) // testSet:{1}
testSet.add(2).add(3) // testSet:{1,2,3}
let arr = [1, 2 , 3]
let map = new Map([[1, 'a'], [2, 'b'], [3, 'c']])
let set = new Set(arr)
[1 ] keys():返回一个键名的遍历器
Set:键名是元素本身
Map:键名是键值对的键名
for(let key of set.keys()){
console.log(key)
// 分别打印出1 2 3
}
for(let key of map.keys()){
console.log(key)
// 分别打印出1 2 3
}
- [2 ] values():返回一个键值的遍历器
Set:**键值是元素本身**
Map:键值是键值对的键值
```javascript
for(let value of set.values()){
console.log(value)
// 分别打印出1 2 3
}
for(let value of map.values()){
console.log(value)
// 分别打印出a b c
}
Set: 本身就是一个构造方法,可以直接new一个set类型的对象,也可以在new的时候传一个数组进去,生成一个该数组去重后的set对象。Set类型有点类似于数组,区别于数组的是,他里面的元素是不能重复的 eg: let a = new Set() // Set类型的空对象{} let b = new Set([1,2,3,3,3]) // 值为数组去重后的set类型的对象{1,2,3} 原型方法:
Map: 本身就是一个构造方法,可以直接new一个Map类型的对象,也可以在new的时候传一个键值对二维数组进去,生成一个Map对象,还可以直接传一个map对象进行克隆,克隆之后相互独立。Map类型有点类似于对象 Map与Object的区别:
原型方法:
Set和Map的遍历:
for(let key of map.keys()){ console.log(key) // 分别打印出1 2 3 }
for(let [key,value] of map.entries()){ console.log(key, value) // 分别打印出 1 a 2 b 3 c } for(let [key,value] of arr.entries()){ console.log(key, value) // 分别打印出 0 1 1 2 2 3 }
4.进阶版:weakSet 和 weakMap 他们和Set Map很像,但是区别在于 weakSet只能存对象,weakMap的key只能是对象
以下涉及到内存泄漏及垃圾回收机制可不看: