【ES6】set数据类型,map数据类型
1.set类似于数组,成员是唯一的
const s = new Set(); s.add(1).add(2).add(3).add(2);//Set(3) {1, 2, 3};支持链式写法
2.面试常见题(数组去重)
var arr1 = [2,3,5,5,2,4,8,2]; var arr2 =[...new Set(arr1)];//扩展运算符,进行序列化处理后,变成数组 console.log(arr2)
3.map 类似于对象,以键值对方式出现;[key,value]
const m = new Map(); m.set("name",'baby').set("age","18"); //es6中新增for of特性 for(let [key,value] of m){ }
(map.size: map中的元素的数量)
补充:
Map 的方法
创建和增加
- 构造函数传入数组创建
- 使用 Set 对象创建 Map 对象
- map.set(key, value) 新增一条键值对记录,然后返回该map对象
删除
- map.delete(key) 如果存在该 key 删除后则返回 true,要是没有该元素则返回 false
- map.clear() 移除Map对象的所有键/值对
查询和遍历
- map.has(key) 如果存在该 key 则返回 true,否则则返回 false
- map.get(key) 如果存在该 key 则返回 key 对应的 value,否则则返回 undefined
- map.entries() 返回一个新的迭代器对象,按照插入顺序包含的元素形式是[key, value] 的数组
- map.keys() 返回一个新的可迭代的对象,包含了按照插入顺序的 map 的 各个键
- map.values() 返回一个新的可迭代的对象,包含了按照插入顺序的 map 的 各个值
- map.forEach((value,key,map)=>{}) 其中 value 是当前元素的值,key 是当前元素的键名,map 是当前正在遍历的 map 对象