VOilà je déclare au départ un objet Tab
je voudrasi venir y ajouter des trucs mais j'ai un gros trou de mémoire ...Code:var Tab={0:"a"}
et je n'arrive pas a trouver sur quels termes chercher sous google ...
Version imprimable
VOilà je déclare au départ un objet Tab
je voudrasi venir y ajouter des trucs mais j'ai un gros trou de mémoire ...Code:var Tab={0:"a"}
et je n'arrive pas a trouver sur quels termes chercher sous google ...
Tu peux faire Tab["toto"] = "titi";
ou Tab.tata = "tutu";
Dans les 2 cas, Tab est considéré comme un objet, avec une série d'attributs mis dans une "Map" (Hash ou Tree, je ne sais pas).
Sinon, tu dois pouvoir faire un Tab.push.
non justement le push ne marche pas lorsque je déclare comme ci dessus :(
j'a également tenté le concat ... sans succès
Effectivement, pour que le push fonctionne, tu est obligé des faire un
Code:
1
2
3 var Tab = new Array(); Tab.push("a");
donc ce n'est pas un hash ...
ma question porte sur l'ajout d'elements dans un hash ...
Tu peux regarder sur ce site. Si tu fais un
c'est géré en interne comme les HashMap de Java.Code:
1
2
3 var X =new Array(); X['toto'] = 'titi';
je connais les array littéraux ... merci ...
je ne souhiate utiliser ni array ni array littéral ...
je voudrais utiliser un hash et ajouter des éléments dedans
et comme ceci :
Code:
1
2
3
4
5
6 var Tab={0:"a"}; Tab[1] = "b"; alert(Tab[0]+" ; "+Tab[1]);
:question:
tu as du te tromper de quai Auteur ... :aie: tu as un waggon de retard :king:
j'en suis arrivé aux prototype...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <SCRIPT type='text/javascript' > var Tab={"a":1} Tab["b"]=2; Object.prototype.Length=function(){ var L=0 for(key in this){alert(this[key] instanceof Function); if(this.hasOwnProperty(key) && !( this[key] instanceof Function) ){L++};} return L; } Object.prototype.Add=function(args){ for (key in args) { if(args.hasOwnProperty(key) && !(this[key] instanceof Function) ){this[key]=args[key]}; } } Object.prototype.Dump=function(){ var dump=""; for (key in this){ if(this.hasOwnProperty(key) && !(this[key] instanceof Function) ){dump+=key + " => " + this[key] +"<br/>";} } return dump; } Tab.Add({c:3,d:4,e:5,f:6}) </SCRIPT> </head> <body onload="document.getElementById('test').innerHTML=Tab.Dump()"> <div id='test'></div> </body> </html>
Pour en revenir aux différences que je notais entre les hash et l'array littéral :
Code:
1
2
3
4
5 var hashObject = {}; var arrayObject = []; alert(hashObject instanceof Array); // false alert(arrayObject instanceof Array); // true
J'ai du me cramer une paire de neurone au passage
je souhaiterais coller le nom de l'objet avant les crochets de dump :
this.??Code:
1
2
3
4
5
6
7 Object.prototype.Dump=function(){ var dump="Name["; for (key in this){ if(this.hasOwnProperty(key) && !(this[key] instanceof Function) ){dump+=key + " => " + this[key] +";";} } dump+="]" return dump; }
J'ai déjà eu ce pb de devoir connaître le nom de l'objet. La seule solution que j'avais trouvée, c'est de le passer dans le constructeur.
C'est pas génial, mais j'ai pas mieux.Code:
1
2
3
4
5
6 fonction Object(nom) { this.nomObjet = nom; } var x = new Object("x");
Sinon, pour le code
C'est plus performant si tu remplaces le "String += ", par un Array.push, puis un join.Code:
1
2
3
4
5
6
7
8 for (key in this) { if(this.hasOwnProperty(key) && !(this[key] instanceof Function) ) { dump+=key + " => " + this[key] +";"; } }
Soit :
Code:
1
2
3
4
5
6
7
8
9
10 var total = new Array(); for (key in this) { if(this.hasOwnProperty(key) && !(this[key] instanceof Function) ) { total.push( key + " => " + this[key] ); } } return "Name[" + total.join(";") + "]";
:mouarf3:
Auteur tu as vraiment du raté un truc alors ..;
en passant un hash en argumant ...Code:
1
2
3
4 Object.prototype.Add=function(args){ for (key in args) { if(args.hasOwnProperty(key) && !(this[key] instanceof Function) ){this[key]=args[key]}; } }
Je suis perplexe 8O
et même:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <script type="text/javascript"> window['Tab']={0:'a'} var ploc={2:"b"} Object.prototype.Nom=function(){ var NOM="undefined" for (elts in window){if(window[elts]==this){ NOM=elts;} } return NOM; } alert(Tab.Nom()) alert(window['ploc'][2]) alert(ploc.Nom()) </script>
8O8OCode:alert(window['ploc'].Nom())
Pourquoi donc reconnait-il window['ploc'] dans l'alert mais pas dans me prototype ????
Comme d'habitude àa passe sous FFX :roll:
Hum.. SubClass ton élément et utilise les méthodes comme hash
Désolé j'ai pas vu le rapport :oops:
Le hash permet bien d'accéder à des données plus rapidement que si tu parcourrais un tableau ou je dis une connerie ?
Tu souhaites donc utiliser le nom de la propriété de ton objet comme clé ?
Bon je vais clore ce sujet et le mettre en résolu parceque là ça ne relève plus vraiment du hash;
mon souci de hash est résolu...