javascript Map实现原理,es6 Map数据结构底层实现 |
您所在的位置:网站首页 › js数组实现原理 › javascript Map实现原理,es6 Map数据结构底层实现 |
🍏 javascript Map实现原理,es6 Map数据结构底层实现
文章目录
🍏 javascript Map实现原理,es6 Map数据结构底层实现🍎 1:前言🍐 2:hash表🍉 3:实现 get 功能🍓 4:实现 set 功能🍍 5:做个测试
🍎 1:前言
哈希表(也称为哈希表)是一种基于键直接访问内存存储位置的数据结构。也就是说,它通过计算一个键值函数来加速查找,该函数将要查询的数据映射到表中的某个位置。该映射函数称为散列函数,记录数组称为散列表。 比如,有一天,我们去购物店买了一件新的、不熟悉的商品。
收银员:(在键盘上噼啪作响。。。) 收银员:88元,给你凑个整。 (滴。。。付款成功) 成功支付90元。 🍐 2:hash表收银员如何在数千件商品中如此迅速地找到这件商品的价格。 有人说可以遍历暴力查询,总能找到项目。 如果有一百万种产品,需要多少时间?虽然始终可以从头到尾查询,但我们追求更好的性能,这就是我们的哈希表存储。 我们需要做的就是将商品转化为下标形式的数字,并对应数组的下标,这样下次遇到这个商品,就可以直接根据下标获取我们需要的信息了。 就像我们有一根香蕉🍌 banana(香蕉) 我们想一个办法把它变成一个数字: function getHash(str) { let _hash = 0; for (let i = 0; i let _hash = getHash(key); //这里的 arr 代表我们存储数据的数组 if(!this.arr[_hash]){ //如果没查到数据,返回undefined return undefined; } return this.arr[_hash]; } 🍓 4:实现 set 功能 function set(key,value){ let _hash = getHash(key); //这里的 arr 代表我们存储数据的数组 this.arr[_hash] = value; } 🍍 5:做个测试 class MyHash { constructor(){ this.arr = []; } get(key) { let _hash = getHash(key); //这里的 arr 代表我们存储数据的数组 if (!this.arr[_hash]) { //如果没查到数据,返回undefined return undefined; } return this.arr[_hash]; } set(key, value) { let _hash = getHash(key); //这里的 arr 代表我们存储数据的数组 this.arr[_hash] = value; } } let myhash = new MyHash(); myhash.set('banana', '88') console.log(myhash.get('banana')) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |