js中Map和Set的用法及区别实例详解


Posted in Javascript onFebruary 15, 2022

首先了解一下 Map

Map 是一组键值对的结构,和 JSON 对象类似。

(1) Map数据结构如下

这里我们可以看到的是Map的数据结构是一个键值对的结构

js中Map和Set的用法及区别实例详解

(2) key 不仅可以是字符串还可以是对象

var obj ={name:"小如",age:9}
let map = new Map()
map.set(obj,"111")

打印结果如下

js中Map和Set的用法及区别实例详解

(3) Map常用语法如下

//初始化`Map`需要一个二维数组(请看 Map 数据结构),或者直接初始化一个空`Map` 
let map = new Map();

//添加key和value值
map.set('Amy','女')
map.set('liuQi','男')

//是否存在key,存在返回true,反之为false
map.has('Amy') //true
map.has('amy') //false

//根据key获取value
map.get('Amy') //女

//删除 key为Amy的value
map.delete('Amy')
map.get('Amy') //undefined  删除成功

(4) 一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值覆盖掉

var map =new Map
map.set('Amy',"女")
map.set('Amy',"男")
console.log(map)

打印结果如下

js中Map和Set的用法及区别实例详解

再来了解一下 Set

Set 对象类似于数组,且成员的值都是唯一的

(1) 打印出的数据结构如下

这里打印出来是一个对象

js中Map和Set的用法及区别实例详解

(2) 最常用来去重使用,去重方法有很多但是都没有它运行的快。

var arr=[1,3,4,2,5,1,4]
// 这里原本是一个对象用了es6的语法 转化成了数组,就是转化数组之前已经过滤掉了重复的元素了
var arr2=[...new Set(arr)] //[1,3,4,2,5]

(3) Set常用语法如下

//初始化一个Set ,需要一个Array数组,要么空Set
var set = new Set([1,2,3,5,6]) 
console.log(set)  // {1, 2, 3, 5, 6}

//添加元素到Set中
set.add(7) //{1, 2, 3, 5, 6, 7}

//删除Set中的元素
set.delete(3) // {1, 2, 5, 6, 7}

//检测是否含有此元素,有为true,没有则为false
set.has(2) //true

总结Map和Set的区别

(1) 这两种方法具有极快的查找速度;那么下面我们来对比一下Map,Set,Array 的执行时间

//首先初始化数据
var lng=100
var arr =new Array(lng).fill(2)
var set =new Set(arr)
let map =new Map()
for(var i=0;i<lng;i++){
arr[i]=i
map.set(i,arr[i])
}

// Array
console.time()
for(var j=0;j<lng;j++){
arr.includes(j)
}
console.timeEnd()  //default: 0.01220703125 ms


// Set
console.time()
for(var j=0;j<lng;j++){
set.has(j)
}
console.timeEnd()  // default: 0.005859375 ms

// Map
console.time()
for(var j=0;j<lng;j++){
map.has(j)
}
console.timeEnd()
// default: 0.007080078125 ms

通过以上几种方法我们可以看到,Set执行时间最短,那么查找速度最快,当然了Set 和 Map的查找速度都很快想差不大,所以说这两种方法具有极快的查找速度。

(2) 初始化需要的值不一样,Map需要的是一个二维数组,而Set 需要的是一维 Array 数组

(3) Map 和 Set 都不允许键重复

(4) Map的键是不能修改,但是键对应的值是可以修改的;Set不能通过迭代器来改变Set的值,因为Set的值就是键。

(5) Map 是键值对的存在,值也不作为健;而 Set 没有 value 只有 key,value 就是 key;

结语:

Map 和 Set 数据结构是ES6语法,最大优点就是运行时间少大大提高了性能。

到此这篇关于js中Map和Set用法及区别的文章就介绍到这了,更多相关js中Map和Set用法区别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
Jun 30 Javascript
关于javascript事件响应的基础语法总结(必看篇)
Dec 26 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
canvas实现贪食蛇的实践
Vue自定义铃声提示音组件的实现
Jan 22 #Vue.js
JavaScript实例 ODO List分析
Jan 22 #Javascript
JavaScript ES6的函数拓展
Jan 18 #Javascript
Vue提供的三种调试方式你知道吗
Jan 18 #Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 #Vue.js
html5调用摄像头截图功能
Jan 18 #Javascript
You might like
PHP与MySQL交互使用详解
2006/10/09 PHP
一个php作的文本留言本的例子(一)
2006/10/09 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
不安全的常用的js写法
2009/09/15 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
Python中datetime常用时间处理方法
2015/06/15 Python
详细分析python3的reduce函数
2017/12/05 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Django中间件基础用法详解
2019/07/18 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python3 assert断言实现原理解析
2020/03/02 Python
Python绘制动态水球图过程详解
2020/06/03 Python
python从PDF中提取数据的示例
2020/10/30 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
GWebs公司笔试题
2012/05/04 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
区域经理岗位职责
2015/02/02 职场文书
大学生村官个人总结
2015/02/15 职场文书
高三英语教学反思
2016/03/03 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python