ES6 Set 和Map

88 阅读1分钟

一、Set

//创建Set方法一:
var set = new Set()
set.add(1) //add为Set添加元素
set.add(2)
console.log(set) //输出: Set {1,2}
//创建Set方法二:
var set = new Set([1, 2])
set.add(3) //同样可以用add添加元素
console.log(set.has(2)) //判断Set中有无相应元素 
console.log(set.has(5))
console.log(set.size) //得出Set元素个数
set.delete(1) //删除对应元素
console.log(set)
console.log([...set]) //使用拓展运算符将Set转换成数组
console.log(Array.from(set))  //使用数组的from方法将Set转换成数组
//数组去重
var arr = [1, 2, 1, 1, 2, 3]
console.log([...new Set(arr)]) //输出: Set {1,2,3}
//如果数组元素值为NaN或引用时类型利用Set去重:NaN不等于NaN,但是可以通过Set去重,而引用类型不能通过Set去重
var arr = [1, {}, {}, 2, 4]
console.log([...new Set(arr)]) //输出:[1,{},{},2,4]
var arr = [1, 2, NaN, NaN]
console.log([...new Set(arr)]) //输出:[1,2,NaN,NaN]

二、Map

//创建一个Map方法一:
var map = new Map()
//Map的key值可以为任何类型:字符串、布尔、数值等,这也是Map和object的主要区别,因为object的key值只能是字符串,所以Es6新增了Map数据类型
map.set('小明', 123) 
map.set(true, 32)
map.set(12, '小红')
console.log(map)  //输出: Map {'小明'=>123,true=>32,12=>'小红'}
//创建一个Map方法二:传入的数组是二维数组,每个内部数组两个元素分别成为Map的key和value
var map = new Map([['小明', 123], [true, 32], [12, '小红']])
console.log(map) //输出同上
console.log(map.has('小明')) //判断该Map是否有相应元素
console.log(map.get('小红')) //获取对应的value值
map.delete('小明') //删除相应的键值对
console.log(map)
map.clear() //清空Map