ES6 set和map超详细讲解

Posted syf976561581

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 如果文章对你有帮助的话,记得给小作者点个赞呦

以上是关于ES6 set和map超详细讲解的主要内容,如果未能解决你的问题,请参考以下文章

ES6中的Set和Map集合

js ES6 Set和Map数据结构详解

Js基础知识7-Es6新增对象Map和set数据结构

ES6新特性:Set和Map

【HDFS】超详细讲解Erasure Coding-- EC架构及图解相关核心代码。

peptide map DDA和IMS有啥区别