Prototype et Array

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 - 5 nov. 2006 à 15:05
FREMYCOMPANY Messages postés 276 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 22 décembre 2008 - 22 déc. 2006 à 15:42
Bonjour,

Dans Script.Aculo.us (dernière version) on peut lire les ajouts dans Array. Comme ceci:
Object.extend(Array.prototype, {

  _each: function(iterator) {

    for (var i = 0; i < this.length; i++)

      iterator(this[i]);

  },...

Le souci est que lorsque je fais une bouche sur un tableau associatif via for(var myObj in aObj)),je retrouve tous les ajouts dans le prototype.

Pourquoi ces ajouts se retrouvent dans mon tableau, pourquoi ai-je droit à des nouvelles clés ?

Comment passer outre et être sur finalement du contenu de mes données ?

J'ai un comportement similaire avec JSON, et j'ai dû baisser les bras.

Merci de votre aide.

S.

4 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 nov. 2006 à 13:28
Bonjour,

Je ne me souviens plus comment fonctionne prototype mais tu dois avoir une méthode forEach

monArray.forEach(function(item, index){
   // Le code
});

<hr />Cyril - MVS - MCP
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
12 nov. 2006 à 15:11
Merci de ta réponse, mais j'essaie de rendre compatible mon site avec
un max de navigateur, donc passer en 1.5 ce sera pour plus tard..

Néammoins si tu as deux minutes pour tester for(var myObj in aObj)) tu peux essayer juste en intégrant JSON dans ta page.

S.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
12 nov. 2006 à 15:21
La méthode forEach est définit dans la librairie Prototype, tu peux donc l'utiliser dés maintenant vu que tu utilises script.aculo.us (qui utilise prototype)

<hr />Cyril - MVS - MCP
0
FREMYCOMPANY Messages postés 276 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 22 décembre 2008
22 déc. 2006 à 15:42
Euh, non, forEach est définie par défaut par FireFox (et par IE ?) mais je ne crois pas que ce soit prototype qui l'ajoute...
La syntaxe est assez simple : ArrayInstance.forEach(function(value, key) {})

Attention, pour IE (et Opéra ?), les objets de type Array contenu dans window, document, un ActiveX, n'héritent PAS des propriétés spécifiques des Array JS...

Une solution serait :
function createArray(unmanagedArray) {
   var arr = new Array()
   for (var i=0; i
Pourquoi notre PC fait-il toujours ce qu'on lui dit ... et pas ce qu'on veut ???
0
Rejoignez-nous