es6 Set对象集合和Map对象集合

一、set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用;

1、数组去重 arr=[1,2,3,1,2,4]

const obj=new Set(arr) 得到一个新的对象 {1,2,3,4} 

将对象转换为数组:[...obj] 或者[...new Set(arr)]

2、也可以对字符串进行去重

值得注意的是,NaN被Set认为是相同的,{}被认为是不同的

const obj=new Set([{},{}])  // 结果  obj是{{},{}}   obj.size是2

const obj =new Set([NaN,NaN])  //结果 obj 是{NaN}  obj.size 是1

所以Set 无法对对象去重

3、Set的一些方法

let mySet=new Set()

mySet.add(value)、mySet.has(value)、mySet.clear();mySet.delete(value);

参数value是必须,要增加,删除、是否含有的元素的值 clear()是清空所有的对象

4、Set的一些用法

let arr1 = [1,2,3,4,5];
let arr2 = [4,5,6,7,8];
let a = new Set(arr1);
let b= new Set(arr2)

数组去重&并集

new Set([...arr1,...arr2]) //{1,2,3,4,5,6,7,8}
let arr3 = [...new Set([...arr1,...arr2])] //[1,2,3,4,5,6,7,8]

数组交集

let arr3 = new Set(arr1.filter(x=>b.has(x))) //{4,5}

数组差集

let arr3 = new Set(arr1.filter(x=>!b.has(x))) //{1,2,3}
let arr4 = new Set(arr2.filter(x=>!a.has(x))) //{6,7,8}
[...arr3,...arr4] //[1,2,3,6,7,8]

5、遍历

在ES6中JavaScript 已经拥有了数组、对象、Map集合和Set集合这样四种数据结构。为了统一和简化遍历这四种数据结构的操作,ES6引入了遍历器机制

1、keys()方法:默认遍历器,其值为集合中的所有键名。
2、values()方法:默认遍历器,其值为集合中的所有值。
3、entries()方法:默认遍历器,其值为所有成员的键值对。

所以Set也有遍历器的方法

let mySet=new Set()

mySet.keys() : 返回键名的遍历器
mySet.values():返回键值的遍历器
mySet.entries(): 返回键值对的遍历器
mySet.forEach() :回调函数遍历

 

二、Map是ES6新增的一种数据结构,Map类似于对象,原本对象的key必须是字符串或者数字,而Map的key可以是任意类型

Map的用法与普通对象差不多,也要实例化一下( new Map() )

1、Map的属性和方法

size:获取成员的数量
set:设置成员 key 和 value
get:获取成员属性值
has:判断成员是否存在
delete:删除成员
clear:清空所有

2、Map的遍历方法

Map 实例的遍历方法有:

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历 Map 的所有成员。

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值