Set集合与Map集合

一、Set集合

Set集合:是一种数据结构,类似于数组,且没有重复的值,主要用于数组去重,字符串去重。

1、创建方式

(1)使用new运算符  let 变量 = new Set();

let s1 = new Set();
console.log(s1);

  

(2)通过数组来创建:let 变量名= new Set(1,2,3,4,5,1,2,3)去除重复元素

let arr = [1,2,3,4,5,1,2,3]
let s2 = new Set(arr);
console.log(s2);

2、常用方法

(1)add(val):向集合中添加元素 

s1.add(123).add(456).add('abc');
console.log(s1);

  

    注:返回的是一个对象  所以可以反复调用

(2)delete(val):删除集合中的元素  若删除成功返回true 失败false

let flag = s1.delete(123);
console.log(flag);

  

(3)has(val):判断val在集合中是否存在 若存在返回true 不存在false

let f = s1.has('table');
console.log(f);

(4)clear():清空集合,没有返回值

s1.clear();
console.log(s1);

  

(5)values():获取的是集合中所有元素的value

let t = s1.values();
console.log(`values:`,t);

  

(6)keys():获取的是集合中所有元素的key

let k = s1.keys();
console.log(`keys:`,k);

        强调:Set集合也是key-value格式,它的key和value是相同的

3、属性

size:存放的是集合中元素的个数

console.log(s1.size);

  

4、遍历方法

(1)for...in

for(let i of s1.values()){
    console.log(i);
}

 

(2)forEach()

s1.forEach(function(value,key){
     console.log(`${value}---${key}`);
})

5、集合运算

(1)并集

let setA = new Set([4,5,6]);
let setB = new Set([5,6,7]);
// 实现setA与setBack的并集
let bj = new Set([...setA,...setB]);
console.log(bj);

 

(2)交集

let arr = [...setA];
let temp = arr.filter(function(item){
    if(setB.has(item) == true){
        return item;
    }
})
console.log(temp);

 

(3)差集

 // 实现setA与setBack的差集 通过对交集的取反即可
let arr = [...setA];
let temp = arr.filter(function(item){
    if(setB.has(item) == false){
        return item;
    }
})
console.log(temp);

 

注:Set是一个构造函数,凡是用构造函数创建对象都要用new

6、WeakSet集合:只是一个对象集合,即集合中只能存放对象

二、Map集合

1.数据的存放格式

采用key-value的方式进行存放

采用键值对方式存放数据的有

(1)对象:属性对应的是key 属性值对应的是value

(2)JSON:是常用的一种前后台数据交换的格式

(2)Map

2、定义

Map是一种数据结构(Hash结构),在ES6中Maori是一种存放许多键值对的有序列表。

3、使用方法

1、属性:size ——存放的是Map中的元素个数

let m1 = new Map();
console.log(m1.size);

 

2、方法

       (1)Map():构造方法,用来创建Map对象,不带参数表示创建空的Map,即size属性值为0

        (2)set(key,value):向Map中添加数据

 let m2 = new Map();
// 向Map集合中添加元素
m2.set('name','张三');
m2.set('USA','美国');
m2.set('CH','中国');
m2.set('INA','印度');
// 输出
console.log(m2);

 

        (3)get(key):获取键为key的value

console.log(m2.get('USA'));

  

        (4)has(key):判断Map中是否存在key 存在true 不存在false

        (5)delete(key):用来删除Map中的指定key

m2.delete('name');
console.log(m2);

 

        (6)clear():清空Map

        (7)keys():返回Map中的所有key

let m3 = new Map();
m3.set('id','01');
m3.set('dept','开发部')
m3.set('phone','132311131');
m3.set('phone2','132311131');

 

        注:(1)Map中的key不能重复,但是value可以重复

                (2)keys()返回的是Map中的所有key的集合——keys返回的集合类型的Set

                (3)在Map中通过key可以得到value,反之则不行 

        (8)values():返回Map中的所有value

for(let v of m3.values()){
    console.log(v);
}

 

        (9)entries():获取Map的所有成员(即所有的key-value)

for(let t of m3.entries()){
    console.log(t);
}

 

        (10)orEach():遍历Map的所有成员 注:函数的第一个参数是value,第二个参数是key

m3.forEach(function(value,key){
    console.log(`${key}:${value}`)
})

 

3、Map数组()

(1)解构整个Map

let m5 = new Map([
    ['one','北京'], 
    ['two','上海'],
    ['three','深圳']
])
let arr = [...m5.entries()];
console.log(arr);

 

(2)解构keys

let a1 = [...m5.keys()];
console.log(a1);

 

(3)解构所有的values

let a2 = [...m5.values()];
console.log(a2);

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值