ES6 Map原理是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"ES6 Map原理是什么",在日常操作中,相信很多人在ES6 Map原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ES6 Map原理是什么"
千家信息网最后更新 2026年11月02日ES6 Map原理是什么
这篇文章主要介绍"ES6 Map原理是什么",在日常操作中,相信很多人在ES6 Map原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ES6 Map原理是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Map利用链表,hash的思想来实现。
首先,Map可以实现删除,而且删除的数据可以是中间的值。而链表的优势就是在中间的任意位置添加,删除元素都非常快,不需要移动其他元素,直接改变指针的指向就可以。
而在存储数据很多的情况下,会导致链条过长,导致查找效率慢,所以我们可以创建一个桶(存储对象的容器),根据hash(把散列的值通过算法变成固定的某值)来平局分配数据,防止链条过长。
如下图:桶里面有3个位置,每一个位置都是一个对象,通过next属性指向下一个对象来把没有关联的对象联到一起。
把Map属性值和属性名都存到对象的值里。
简单模拟Map,代码如下:
function Mymap() { //构造函数 this.init();}//初始化函数,创建桶(数组),每个位置都是一个对象,每个对象的属性上设置next属性,并且初始化为null。Mymap.prototype.init = function () { this.tong = new Array(8); for (var i = 0; i < 8; i++) { this.tong[i] = new Object(); this.tong[i].next = null; }};//添加数据。Mymap.prototype.set = function (key, value) { var index = this.hash(key); //获取到当前设置的key设置到那个位置上 var TempBucket = this.tong[index]; //获取当前位置的对象 while (TempBucket.next) { //遍历如果当前对象链接的下一个不为空 if (TempBucket.next.key == key) { //如果要设置的属性已经存在,覆盖其值。 TempBucket.next.value = value; return; //return ,不在继续遍历 } else { TempBucket = TempBucket.next; //把指针指向下一个对象。 } } TempBucket.next = { //对象的next是null ,添加对象。 key: key, value: value, next: null }};//查询数据Mymap.prototype.get = function (key) { var index = this.hash(key); var TempBucket = this.tong[index]; while(TempBucket){ if(TempBucket.key == key){ return TempBucket.value; }else{ TempBucket = TempBucket.next; } } return undefined;}//删除数据Mymap.prototype.delete = function(key){ var index = this.hash(key); var TempBucket = this.tong[index]; while(TempBucket){ if(TempBucket.next.key == key){ TempBucket.next = TempBucket.next.next; return true; }else{ TempBucket = TempBucket.next; } }}//看当前属性是否存在Mymap.prototype.has = function(key){ var index = this.hash(key); var TempBucket = this.tong[index]; while(TempBucket){ if(TempBucket.key == key){ return true; }else{ TempBucket = TempBucket.next; } } return false;}//清空这个mapMymap.prototype.clear = function(){ this.init();}//使设置的属性平均分配到每个位置上,使得不会某个链条过长。Mymap.prototype.hash = function (key) { var index = 0; if (typeof key == "string") { for (var i = 0; i < 3; i++) { index = index + isNaN(key.charCodeAt(i)) ? 0 : key.charCodeAt(i); } } else if (typeof key == 'object') { index = 0; } else if (typeof key == 'number') { index = isNaN(key) ? 7 : key; } else { index = 1; } return index % 8;}var map = new Mymap(); //使用构造函数的方式实例化mapmap.set('name','zwq');map.get('name');map.has('name);到此,关于"ES6 Map原理是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
对象
属性
位置
数据
原理
学习
函数
指向
链条
元素
指针
更多
分配
存储
帮助
实用
接下来
个位
代码
优势
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
互联网科技社
科技信息互联网
与互联网科技公司
平安科技 互联网
互联网未来科技
互联网科技股票
九亚互联网科技
新浪科技互联网
互联网高科技企业
衡水科技产业互联网平台
海南科技产业互联网平台
翼展科技 首家互联网医院
用友工业互联网科技发展
信承诺互联网科技有限公司
昆明中奇联合互联网科技
中国新注册互联网科技
互联网科技收购价值
同城互联网络科技
黑龙江互联网科技公司
北京路客互联网科技有限公司
云信互联网科技有限公司
智网互联网科技
居家互联网科技有限公司
重庆互联网医院沙龙医盟信息科技
亳州好赞互联网科技有限公司
互联网保险科技创业
华中科技大学互联网的牛人
承德科技产业互联网平台
瑞安市蟠桃会互联网科技有限公司