Map是存储关键字和值间关联的对象。给定一个关键字,就可以找到其对应的值。关键字和值都是对象。关键字是唯一,但是值可以重复的。
可以认为映射容器分为两部分,一部分保存键,一部分保存值,并且部分之间有关联(一个键对应一个值)。
从数据结构的角度分析,有关Map 的典型操作有:
1、向Map 中插入具有给定关键字的元素单元。
2、在Map中查找具有给定关键字的元素单元。
3、在Map 中删除具有给定关键字的元素单元。
4、枚举(遍历)Map 中的所有元素单元。
我们可以尝试简单的实现Map的代码
代码如下(可能会存在小错误,望谅解):
<script>
class Map {
constructor () {
//构造函数
this.keys = []
this.vals = []
}
get (key) {
var keyIde = this.keys.indexOf(key)
if (keyIdx >= 0) {
return this.vals[keyIdx]
}
}
has (key) { //判断映射中是否存在某个key的映射
var keyIdx = this.keys.indexOf(key)
if (keyIdx >= 0) {
return true
}
return false
}
set (key , val) { //key的映射目标为val
var keyIde = this.keys.indexOf(key)
if (keyIdx >= 0) {
this.vals[keyIde] = val
} else {
this.keys.push[keyIde]
this.vals.push[keyIde]
}
return this
}
delete (key) { //删除key的映射对
var keyIdx = this.keys.indexOf(key)
if (keyIdx >= 0) {
this.keys.splice(keyIdx , 1)
this.vals.splice(keyIdx , 1)
return true
}
return false
}
clear (key) { //清空所有的映射
this.keys = []
this.vals = []
}
size (key) { //返回挡前map
return this.keys.length
}
}
</script>