热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript中实现字典(Dictionary)数据结构

最近在深入学习《数据结构与算法–JavaScript描述》一书,尝试通过npmjs.org寻找合适的库作为参考,但未能找到完全符合需求的资源。因此,决定自行实现一个字典数据结构,以便日后能够直接应用。

动机

在研读《数据结构与算法–Javascript描述》的过程中,我访问了npmjs.org,希望能够找到适合的库来参考和记录,以便将来需要时可以直接使用。遗憾的是,没有找到特别满意的库,这促使我决定自己动手实现一个字典(Dictionary)数据结构。

设计思路

在实现过程中,我采用了一个纯净的对象datastore来存储元素。
此外,提供了两种获取字典长度的方法:一是通过变量追踪,二是实时计算字典中的元素数量。

实现细节

以下是字典类的具体实现:

(function(){
"use strict";
function Dictionary(){
this._size = 0;
this.datastore = Object.create(null);
}
Dictionary.prototype.isEmpty = function(){
return this._size === 0;
};
Dictionary.prototype.size = function(){
return this._size;
};
Dictionary.prototype.clear = function(){
for(var key in this.datastore){
delete this.datastore[key];
}
this._size = 0;
};
Dictionary.prototype.add = function(key, value){
if (!this.datastore.hasOwnProperty(key)) {
this._size++;
}
this.datastore[key] = value;
};
Dictionary.prototype.find = function(key){
return this.datastore[key];
};
Dictionary.prototype.count = function(){
var n = 0;
for(var key in this.datastore){
if (this.datastore.hasOwnProperty(key)) {
n++;
}
}
return n;
};
Dictionary.prototype.remove = function(key){
if (this.datastore.hasOwnProperty(key)) {
delete this.datastore[key];
this._size--;
}
};
Dictionary.prototype.showAll = function(){
for(var key in this.datastore){
if (this.datastore.hasOwnProperty(key)) {
console.log(key + "->" + this.datastore[key]);
}
}
};
module.exports = Dictionary;
})();

代码仓库

本项目的源代码托管在以下两个平台上:
GitHub: zhoutk/js-data-struct
开源中国: zhoutk/jsDataStructs


推荐阅读
author-avatar
riwei2004sohu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有