最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

创建JavaScript的哈希表Hashtable

来源:动视网 责编:小采 时间:2020-11-27 20:30:34
文档

创建JavaScript的哈希表Hashtable

创建JavaScript的哈希表Hashtable:Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象。但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合面象对象编程所提倡的封装原则。这里其实就是利用JavaSc
推荐度:
导读创建JavaScript的哈希表Hashtable:Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象。但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合面象对象编程所提倡的封装原则。这里其实就是利用JavaSc


Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象。但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合面象对象编程所提倡的封装原则。这里其实就是利用JavaScriptObject 对象可以动态添加属性的特性来实现Hashtable, 这里有需要说明的是JavaScript 可以通过for语句来遍历Object中的所有属性。但是这个方法一般情况下应当尽量避免使用,除非你真的知道你的对象中放了些什么。

<script type="text/javascript">
function Hashtable() { 
 this._hashValue= new Object(); 
 this._iCount= 0; 
} 
 
Hashtable.prototype.add = function(strKey, value) { 
 if(typeof (strKey) == "string"){ 
 this._hashValue[strKey]= typeof (value) != "undefined"? value : null; 
 this._iCount++; 
 returntrue; 
 } 
 else 
 throw"hash key not allow null!"; 
} 
 
Hashtable.prototype.get = function (key) { 
 if (typeof (key)== "string" && this._hashValue[key] != typeof('undefined')) { 
 returnthis._hashValue[key]; 
 } 
 if(typeof (key) == "number") 
 returnthis._getCellByIndex(key); 
 else 
 throw"hash value not allow null!"; 
 
 returnnull; 
} 
 
Hashtable.prototype.contain = function(key) { 
 returnthis.get(key) != null; 
} 
 
Hashtable.prototype.findKey = function(iIndex) { 
 if(typeof (iIndex) == "number") 
 returnthis._getCellByIndex(iIndex, false); 
 else 
 throw"find key parameter must be a number!"; 
} 
 
Hashtable.prototype.count = function () { 
 returnthis._iCount; 
} 
 
Hashtable.prototype._getCellByIndex = function(iIndex, bIsGetValue) { 
 vari = 0; 
 if(bIsGetValue == null) bIsGetValue = true; 
 for(var key in this._hashValue) { 
 if(i == iIndex) { 
 returnbIsGetValue ? this._hashValue[key] : key; 
 } 
 i++; 
 } 
 returnnull; 
} 
 
Hashtable.prototype.remove = function(key) { 
 for(var strKey in this._hashValue) { 
 if(key == strKey) 
 { 
 deletethis._hashValue[key]; 
 this._iCount--; 
 } 
 } 
} 
 
Hashtable.prototype.clear = function () { 
 for (var key in this._hashValue) { 
 delete this._hashValue[key]; 
 } 
 this._iCount = 0; 
} 
</script>

StringCollection/ArrayList/Stack/Queue等等都可以借鉴这个思路来对JavaScript 进行扩展。

文档

创建JavaScript的哈希表Hashtable

创建JavaScript的哈希表Hashtable:Hashtable是最常用的数据结构之一,但在JavaScript里没有各种数据结构对象。但是我们可以利用动态语言的一些特性来实现一些常用的数据结构和操作,这样可以使一些复杂的代码逻辑更清晰,也更符合面象对象编程所提倡的封装原则。这里其实就是利用JavaSc
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top