ES6 set和map超详细讲解

set是什么
set 是ES6提供的新的数据结构,他和Array相似,但是set定义的值都具有唯一性,不能重复,可以存储任意类型的值
使用set可以求数组的并集.差集.交集等等
  1. 去重
var mySet = new Set([1, 2, 3, 4, 4]);
mySet为你定义的数组
  1. 并集(相当于合并数组)
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]); // {1, 2, 3, 4}
  1. 交集(求两个数组的共有值)
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}
  1. 差集
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var difference = new Set([...a].filter(x => !b.has(x))); // {1}
方法
  1. mySet.add(12) 添加成员
  2. mySet.delete(想删除的值)
  3. mySet.clear() 清除所有成员
  4. mySet.has(判断是否存在某个值)
  5. mySet.size 查看属性的长度
数组的遍历
let mySet = new Set([10,20,30,12]);
for (let value of mySet ){
		console.log(value)
	}
2.
mySet.forEach(function(val){
	console.log(val)
})
map
       是什么:Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值,和set类似

map和Object的区别
  1. 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
  2. Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
  3. Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
  4. Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
方法:
  1. map.set(key,value) 添加
  2. map.get(key) 获取
  3. map.size() 获取长度
  4. map.has(key)判断是否存在
  5. map.clear() 清空
遍历
1.
forlet val of map){ }
2.
map.forEach(function(value,key){
})
3.
for(let item of map.values()){
}
set和map的区别
set是一种关联式容器,以RBTree作为底层容器
  1. 所得元素的只有key没有value,value就是key
  2. 不允许出现键值重复
  3. 所有的元素都会被自动排序
  4. 不能通过迭代器来改变set的值,因为set的值就是键
    map和set一样是关联式容器,区别就在于map的值不作为键,键和值是分开的。它的特性如下:

map以RBTree作为底层容器

  1. 所有元素都是键+值存在
  2. 不允许键重复
  3. 所有元素是通过键进行自动排序的
  4. map的键是不能修改的,但是其键对应的值是可以修改的

这些就是es6的set和map 如果文章对你有帮助的话,记得给小作者点个赞呦

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值