Map特点
1.有属性名、属性值,键值对不重复,若属性相同会被新添加的键值对覆盖
2.属性名数据类型:function、{}、NaN、number、[]、undefined、null、boolean、string
3.原型方法:set()、get()、delete()、clear()、has()
模拟实现
hash算法:利用hash算法将属性值转化为0-8之间的,进而放入桶中
桶:利用数组模拟实现桶存储结构
链表:hash算法转化到特定区间的数据,相同的存储到同一链表上
function Map() {
this.bucketLength = 8;
this.init();
}
Map.prototype.init = function () {
this.bucket = new Array (this.bucketLength);
for (let i = 0; i < this.bucket.length; i ++){
this.bucket[i] = {
type:'bucket' + i,
next:null,
}
}
}
Map.prototype.hash = function (key) {
let hash = 0;
if ( typeof key !== 'string'