作者:riwei2004sohu | 来源:互联网 | 2024-12-11 13:30
最近在深入学习《数据结构与算法–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