set
Set 对象允许存储任何类型的唯一值,无论是原始值或者是对象引用。
Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
- +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
- undefined 与 undefined 是恒等的,所以不重复;
- NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
利用set()方法值的唯一性可以进行数组的去重
let arr = [1,2,3,3,3,4,5,2,2,];
let arrSign = new Set(arr);
let arrNew = Array.from(arrSign) //类数组 => 还原为真数组
console.log(arrNew) //会自动把重复的元素去除
set对象的方法
add( ) 添加新项
let setArr = new Set();
setArr.add('a')
setArr.add('b')
也可以采用链式语法
setArr.add('a').add('b').add('c')
console.log(setArr);
delete( ) 删除某一项
let setArr = new Set();
setArr.add('a').add('b').add('c').delete('b');
console.log(setArr)
has() 判断有没有某个元素
let setArr = new Set();
setArr.add('a').add('b').add('c');
console.log(setArr)
console.log(setArr.has('a')); //布尔值
size 元素的个数
let setArr = new Set();
setArr.add('a').add('b').add('c').delete('b');
console.log(setArr.size)
clear() 清空
let setArr = new Set();
setArr.add('a').add('b').add('c').delete('b');
console.log(setArr);
setArr.clear();
console.log(setArr)
set对象的遍历
let setArr = new Set(['a', 'b', 'c', 'd']);
console.log(setArr)
//keys和values相同,默认是value
for (let item of setArr.keys()) {
console.log(item);
}
console.log('---------------------------');
for (let item of setArr.values()) {
console.log(item);
}
console.log('---------------------------');
for (let item of setArr.entries()) {
console.log(item);
}
console.log('---------------------------');
for (let [k, v] of setArr.entries()) {
console.log(k, v);
}
WeakSet()
new WeakSet({})存储 json
WeakSet 没有 size,也没有 clear()
有, add(), has(), delete()
let wSet = new WeakSet();
let json1={
a:1,
b:2
};
let json2={
a:"apple",
b:2
}
wSet.add(json1)
wSet.add(json2)
console.log(wSet)
console.log(wSet.has(json1))
Map()
类似 json,有 key 和 value 但是 json 的键(key)只能是字符串
map 与 json 很类型,但 map 的 key 可以是任意类型
- map.set(key,value); 设置一个值
- map.get(key) 获取一个值
- map.delete(key) 删除一项
- map.has(key) 判断有没有
- map.clear() 清空
let map = new Map();
let json = {
a:1,
b:2
};
map.set('a','aaa');
map.set(json,'aaa');
map.set('aaa',json);
console.log(map.get(json)); //aaa
console.log(map.get('aaa')) //json
map.delete('aaa');
console.log(map.get('aaa')); //undefined
console.log(map.has('aaa')); //false
console.log(map);
map.clear();
console.log(map)
WeakMap()
key 只能是对象
具有的方法有:has()、set()、delete()没有 size、clear()
let wMap = new WeakMap();
let json = {
a:1,
b:2
}
wMap.set(json,'aaa');
console.log(wMap)