一、Set结构
* Set 本身是一个构造函数
* Set 的构造函数constructor 是自己本身
* Set 使用的时候 需要new对象
* Set 结构不会添加重复的值,即其中所有值都是唯一的,可用于数组去重
- Set的实例化
let arr=[1,2,3,4,5];
let set=new Set(arr);
console.log(set); //set(5) [1,2,3,4,5]
//数组去重
let set=new Set([1,2,3,3,4,5,5,6,6]);
console.log(set); //set(6) [1,2,3,4,5,6]
- Set对象的属性和方法
- size属性:返回Set实例的成员总数
- add() 方法:将值添加到Set实例中
- delete() 方法:删除Set实例的某个值 删除成功返回true 没找到要删除的值时,即删除失败,返回false
- has() 方法:检测是否有某个值 有返回true 无false
- clear() 方法:清除所有的成员 没有返回值的
- Set对象转换为数组的两种方法
let set=new Set([1,2,3,4,5,6]);
//方法一:用Array对象的from方法将set集合转换为数组
console.log(Array.from(set)); //[1,2,3,4,5,6]
//方法二:用扩展运算符“...” 将set集合拆为数组
let [...array]=[...set];
console.log(array); //[1,2,3,4,5,6]
- Set结构实例的遍历方法
1.obj.keys():返回键名的遍历器
2.obj.values():返回键值的遍历器
3.obj.entries():返回键值对的遍历器
4.obj.forEach():使用回调函数遍历每个成员
前三种在对象的扩展中已进行过说明,在此不再赘述
forEach()方法:参数是一个回调函数,该函数的参数依次为键值、键名,Set 结构的键名和键值是同一个值
//forEach方法
let set=new Set(["a","b","c","d"]);
console.log(set);
set.forEach((value, key) => {
console.log(value, key);
});
// a a
// b b
// c c
// d d
二、Map结构:本质上是键值对的集合
-
Map结构的实例化
1.通过set()方法添加键值对
let arr=[1,2,3,4,5,6];
let obj={
name:"张三",
age:20
}
// let map=new Map("array",[1,2,3,4,5]); //错误写法
//需要通过set方法添加键值对
let map=new Map();
map.set("array",arr);
map.set("object",obj);
console.log(map); //Map(2) {"array" => Array(6), "object" => {…}}
//根据键名取键值
console.log(map.get("array")); //(6) [1, 2, 3, 4, 5, 6]
- 可以直接传入二维数组
let map=new Map([[1,2],[3,4]]);
console.log(map);
//0: {1 => 2}
//1: {3 => 4}
- 可以传入对象
let map=new Map([["张三",{age:20,sex:"男"}],["李四",{age:19,sex:"女"}]]);
console.log(map);
//0: {"张三" => Object}
//1: {"李四" => Object}
- Map实例对象的属性和方法
- size:返回Map实例的成员个数
- has() :检测键是否存在 返回true/false
- delete():删除键 返回true/false
- clear():全部清除
- set():设置Map结构中的值(键和键值)
- get():获取Map结构中的值 (键和键值)
- Map实例转换为对象
let map=new Map();
map.set("a",1);
map.set("b",1);
map.set("c",1);
let obj={};
for(let key of map.keys()){
obj[key]=map.get(key);
}
console.log(obj);
//{a: 1, b: 1, c: 1}
console.log(JSON.stringify(obj));
//{"a":1,"b":1,"c":1}
JSON.parse() //从一个字符串中解析出json对象
JSON.stringfy() //从一个对象中解析出字符串