什么是字典
字典:字典存储的是键值对,主要的特征是一一对应,字典中的 key 是不能重复且无序的,value 可以重复。
ES6 中的 Map 就是一个字典结构。
字典常用的方法
- has(key) 判断字典中是否存在这个 key
- set(key, value) 在字典中添加键值对
- remove(key) 从字典中删除 key
- get(key) 获取指定 key 的 value 如果没有返回 undefined
- keys() 获取所有的 keys
- values() 获取所有的 values
- size() 获取字典的键值对的个数
- clear() 清除字典的所有数据
ES6 实现字典结构
- 字典结构的封装
/**
* 字典数据结构
* 特点:
* 1. 字典主要存储的是键值对,主要的特点就是对值的一一对应
* 2. 字典的key是不能重复的并且是无序的,但是value可以有重复的
*
* @class Map_
*/
class Map_ {
constructor() {
this.map = {};
}
}
- has(key) 方法的实现
// has(key) 判断字典中是否存在这个key
has(key) {
return this.map.hasOwnProperty(key);
}
- set(key, value) 方法的实现
// set(key, value) 在字典中添加键值对
set(key, value) {
this.map[key] = value;
}
- remove(key) 方法的实现
// remove(key) 从字典中删除key
remove(key) {
if (!this.has(key)) return false;
delete this.map[key];
}
- get(key) 方法的实现
// get(key) 获取指定key的value 如果没有返回undefined
get(key) {
return this.has(key) ? this.map[key] : undefined;
}
- keys() 方法的实现
// keys() 获取所有的keys
keys() {
return Object.keys(this.map);
}
- values() 方法的实现
// values() 获取所有的values
values() {
return Object.values(this.map);
}
- size() 方法的实现
// size() 获取字典的键值对的个数
size() {
return this.keys().length;
}
- clear() 方法的实现
// clear() 清除字典的所有数据
clear() {
this.map = {};
}
字典结构的总体代码
/**
* 字典数据结构
* 特点:
* 1. 字典主要存储的是键值对,主要的特点就是对值的一一对应
* 2. 字典的key是不能重复的并且是无序的,但是value可以有重复的
*
* @class Map_
*/
class Map_ {
constructor() {
this.map = {};
}
// has(key) 判断字典中是否存在这个key
has(key) {
return this.map.hasOwnProperty(key);
}
// set(key, value) 在字典中添加键值对
set(key, value) {
this.map[key] = value;
}
// remove(key) 从字典中删除key
remove(key) {
if (!this.has(key)) return false;
delete this.map[key];
}
// get(key) 获取指定key的value 如果没有返回undefined
get(key) {
return this.has(key) ? this.map[key] : undefined;
}
// keys() 获取所有的keys
keys() {
return Object.keys(this.map);
}
// values() 获取所有的values
values() {
return Object.values(this.map);
}
// size() 获取字典的键值对的个数
size() {
return this.keys().length;
}
// clear() 清除字典的所有数据
clear() {
this.map = {};
}
}