Heim  >  Artikel  >  Web-Frontend  >  Erstellen Sie eine JavaScript-Hash-Tabelle Hashtable

Erstellen Sie eine JavaScript-Hash-Tabelle Hashtable

高洛峰
高洛峰Original
2016-11-28 15:36:541200Durchsuche

Hashtable ist eine der am häufigsten verwendeten Datenstrukturen, es gibt jedoch keine verschiedenen Datenstrukturobjekte in JavaScript. Wir können jedoch einige Funktionen dynamischer Sprachen verwenden, um einige häufig verwendete Datenstrukturen und Operationen zu implementieren, wodurch einige komplexe Codelogik klarer werden und dem von der objektorientierten Programmierung befürworteten Kapselungsprinzip besser entsprechen können. Dies ist eigentlich die Verwendung von JavaScriptObject-Objekten, die dynamisch Attribute hinzufügen können, um Hashtable zu implementieren. Hier muss erklärt werden, dass JavaScript alle Attribute in Object über die for-Anweisung durchlaufen kann. Aber diese Methode sollte im Allgemeinen vermieden werden, es sei denn, Sie wissen wirklich, was in Ihrem Objekt enthalten ist.

<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(&#39;undefined&#39;)) {  
        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 usw. können alle diese Idee nutzen, um JavaScript zu erweitern.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn