Set和Map的使用

73 阅读3分钟

第一章、了解Set和Map 1.1 Map 发展:ES6之前,再js中实现“键/值”式的存储可以使用吗Object来方便高效完成,也就是使用对象属性作为键,在使用属性来引用值。

在ES6之后,Map作为新特性,Map是一种新的集合类型,为JS带来了真正的键/值存储机制。Map的大多数特性都可以通过Object类型实现,但两者还是存在一些细微的差异。

1.2 Set 新数据结构Set,类似于数组,但是成员的值都是唯一的,也是一种新的数据类型,在很多方面加强了Map Set一个很常见的方法就是数组去重 第二章、Set和Map基本API 2.1 Map基本API 使用new关键字和Map构造函数可以创建一个空映射:m = new Map() ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                    

原文链接:blog.csdn.net/qq_45796592…

const m = new Map();

//添加元素
m.set('name','❆LO❆');
m.set('name','❆VE❆').set('age','18');
m.set('change', function(){
    console.log("发生了变化!!");
});
let key = {
    school : 'ncwu'
};
m.set(key, ['南京','桂林','郑州']);
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_45796592/article/details/128653163


1.  m.delete('name');
1.  //清空
1.  m.clear();
```
-   **获取某个值:m.get("键名")**

```
console.log(m.get('change'))

```
-   **查看map元素的个数:m.** **size**

```
```
console.log(m.size)

-   **查看Map中有无某个key:m.has( " 键名" )**

```
console.log(m.has('name'))

-   **遍历Map:for ···· each遍历;for ···· of es6新增的遍历方法**

1.    
    for(let v of m){
1.  console.log(v);
1.  }

```
```
```
Set基本API
创建一个Set:s = new Set()
添加新的元素:s.add( 添加的数据 ),当添加的数据在Set集合中已经存在时,将不会再被添加进去
删除指定数据/清空集合:s.delete() / s.clear()

查找集合中有没有指定数据:s.has('糟心事')

判断集合中有多少元素:s.size

遍历数组:for ···· each 遍历;for····of es6新增的遍历方法

//声明一个 set
let s = new Set();
let s2 = new Set(['大事儿','小事儿','好事儿','坏事儿','小事儿']);//去重
//元素个数
console.log(s2.size);
//添加新的元素
s2.add('喜事儿');
//删除元素
s2.delete('坏事儿');
//检测
console.log(s2.has('糟心事'));
//清空
s2.clear();
console.log(s2);
for(let v of s2){
    console.log(v);
}
2.3 Set集合实例
交集:第一个数组去重,然后判断去重后的数组中的项是不是在第二个数组中有没有,如果有,则过滤出来
并集:将两个数组合并,去重
差集:第一个数组去重,然后判断去重后的数组中的项是不是在第二个数组中有没有,如果没有,则过滤出来
let arr = [1,2,3,4,5,4,3,2,1];
//1. 数组去重
let result = [...new Set(arr)];
console.log(result); // [1, 2, 3, 4, 5]
//2. 交集
let arr2 = [4,5,6,5,6];
let result = [...new Set(arr)].filter(item => {
    let s2 = new Set(arr2);// 4 5 6
    if(s2.has(item)){
        return true;
    }else{
        return false;
    }
});
let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
console.log(result); // [4, 5]
//3. 并集
let union = [...new Set([...arr, ...arr2])];
console.log(union); // [1, 2, 3, 4, 5, 6]
//4. 差集
let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
console.log(diff); //[1, 2, 3]
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_45796592/article/details/128653163
```
```
```

-
```

-