set集合、map映射的特点:不重复、无序
Set集合
-
声明set:let set = new Set();
-
获取成员的个数:set.size
-
添加成员:set.add(成员);
-
删除成员:set.delete(成员);
-
清除所有成员:set.clear();
-
判断某个值是否是set的成员:let flag = set.has(成员);
-
遍历
① for…oflet set = new Set([1, 2, 3, 4, 5, 6]); for(let item of set) { console.log(item); }
② forEach
let set = new Set([1, 2, 3, 4, 5, 6]); set.forEach((item, index) => { console.log(index, item); // index为键;item为值,且键和值相同 })
-
数组与集合互相转换
① 数组变集合let arr = [1, 2, 3, 4, 5, 6]; let set = new Set(arr);
② 集合变数组
let set = new Set([1, 2, 3, 4, 5, 6]); let arr = [...set];
-
数组去重
let arr = [...new Set([1, 2, 2, 4, 3, 5, 6, 6])]; // [1, 2, 4, 3, 5, 6]
Map映射
map与set区别:map的键可以是任意数据类型
- 声明map对象:let map = new Map();
- 获取成员的个数:map.size
- 添加成员:map.set(键,值);
- 删除成员:map.delete(键);
- 获取成员:map.get(键);
- 清除所有成员:map.clear();
- 判断某个值是否是map的成员:let flag = map.has(键);
- 遍历
① for…of + map.keys()、map.values()let map = new Map(); map.set(a, 123); // 键:a 值:123 map.set({ name: '小w' }, 18); // 键:包含name属性的对象 值: 18 // 通过map.keys()遍历键 for(let key of map.keys()) { console.log(key); // a 、 {name: '小w'} } // 通过map.values()遍历值 for(let value of map.values()) { console.log(value); // 123、18 } // 通过map遍历键值对 for(let [key, value] of map) { console.log(key, value); // 这里通过解构赋值的方式可直接获取到key和value }