ES6--set和map

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值