Implementation de hashtable

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 887 fois - Téléchargée 17 fois

Contenu du snippet

c'est l'implementation de java.util.HashTable en javascript
pour ceux qui veulent la développé plus a vous de le faire je reserve le reste des methodes pour moi :)p
dabord il faut faire une extentation de la class Object par defaut de javascript puis implementé la class HashTable
a bientot

Source / Exemple :


function HashTable(){

}
HashTable.prototype={
    put: function(key, value) {
      return this[key] = value;
    },
    get: function(key) {
      if (this[key] !== Object.prototype[key])
      return this[key];
    },
    remove: function(key) {
      delete this[key];
    },
    keys:function(){
	var a=[];
    	for(var b in this){
        	if(this.hasOwnProperty(b))
            	a.push(b);
    	}
    	return a;
     },
    values: function() {
	var a=[];
	for(var b in this){
		if(this.hasOwnProperty(b)) a.push(this[b])
	}
	return a;		
    }
}
/** Utilisation */
s=new HashTable();
s.put("key1","value1");
s.put("key2","value2");
s.put("key3","value3");
alert(s.get("key2"));
alert(s.keys());
alert(s.values());
s.remove("key2");
alert(s.keys());
alert(s.values());

A voir également

Ajouter un commentaire

Commentaires

cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

salut, je me serais pris autrement. Au lieu de cloner l'objet et de le référencer par this.object, j'aurais étendue à l'instance toute les variables de l'objet. Ensuite la fonction hasOwnProperty permet de savoir si une propriété est définit dans le prototype ou dans l'insatnce.

Par exemple pour la fonction keys sa donnerait

keys:function(){
var a=[];
for(var b in this){
if(this.hasOwnProperty(b))
a.push(b);
}
return a;
}
ousous
Messages postés
1
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
1 mars 2010

j'ai pensé a ta solution avant que tu la propose mais le pb c'est qil te retourne toutes les méthodes de ta classe donc c pas bon ce que j'ai fait retourne que ce quon vient d'ajouter dans le hashtable
cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

justement, grâce à la méthode native hasOwnProperty qui permet de savoir si une propriété est définit directement dans l'instance et non dans le prototype , je crois pas qu'il y ait des bug sur cette fonction, mais à tester quand même sous ie6.

par exemple une base pourrait ressembler à ca :

function Hash(obj){
for(var i in obj)
this[i] = obj[i];
}

Hash.prototype.each = function(fn, context){
context = context || this;
for(var i in this){
if(this.hasOwnProperty(i))
fn.call(context, this[i], i);
}
}


var jo = new Hash({
test1 : 'ok1',
test2 : 'ok2'
});

jo.each(function(value, index){
alert(index +' à comme valeur ' + value);
});

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.