map和set的区别
Map
Map 是一组键值对的结构,和 JSON 对象类似。
Map的key值不仅可以是字符串还可以是对象。
1
2
3
4let a = {b:1}
let map = new Map()
map.set(a,111)
map.get(a) // 111Map中一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值覆盖掉
1
2
3
4var map =new Map
map.set('Amy',"女")
map.set('Amy',"男")
map.get('Amy') //男Map中的常用语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16let map = new Map();
//添加key和value值
map.set('Amy','女')
map.set('liuQi','男')
//是否存在key,存在返回true,反之为false
map.has('Amy') //true
map.has('amy') //false
//根据key获取value
map.get('Amy') //女
//删除 key为Amy的value
map.delete('Amy')
map.get('Amy') //undefined 删除成功
Set
Set 对象类似于数组,且成员的值都是唯一的
最常用来去重使用
1
2
3var arr=[1,3,4,2,5,1,4]
// 这里原本是一个对象用了es6的语法 转化成了数组,就是转化数组之前已经过滤掉了重复的元素了
var arr2=[...new Set(arr)] //[1,3,4,2,5]Set常用语法如下
1
2
3
4
5
6
7
8
9
10
11var set = new Set([1,2,3,5,6])
console.log(set) // {1, 2, 3, 5, 6}
//添加元素到Set中
set.add(7) //{1, 2, 3, 5, 6, 7}
//删除Set中的元素
set.delete(3) // {1, 2, 5, 6, 7}
//检测是否含有此元素,有为true,没有则为false
set.has(2) //true
异同
- 初始化需要的值不一样,Map需要的是一个二维数组,而Set 需要的是一维 Array 数组
- Map 和 Set 都不允许键重复
- Map的键是不能修改,但是键对应的值是可以修改的;Set不能通过迭代器来改变Set的值,因为Set的值就是键。
- Map 是键值对的存在,值也不作为健;而 Set 没有 value 只有 key,value 就是 key
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wn244的个人博客!
