2012-02-02 3 views
0

Je l'objet javascript suivant:Comment accéder aux clés imbriquées dans cet objet javascript imbriqué?

result = { 
    "banking6dig":{ 
     "GM-B-001":{ 
      "releaseDate":"2/2/2012 14:44","noOfHex":"3","versInfo":"6 digit Banking" 
     }, 
     "GM-B-002":{ 
      "releaseDate":"1/2/2012 14:46","noOfHex":"3","versInfo":"6 digit Banking with changes" 
     } 
    }, 
    "paynpark":[] 
} 

Explication:

"banking6dig" et "paynpark" sont des applications
"banking6dig" a deux subversions: "GM-B-001" et "GM-B-002"
"paynpark" n'a pas de subversions.

De plus, chaque subversion possède ses propres propriétés, à savoir "releaseDate", "noOfHex" et "versInfo".

Cet objet "result" est construit après une requête php, il peut donc avoir un nombre quelconque d'applications et de sous-versions; le format, cependant, est TOUJOURS le même.

J'ai essayé sur jsFiddle: http://jsfiddle.net/2JLtZ/1/

  1. Comment puis-je connaître le nombre de "subversions" dans chaque "app"? (Je reçois quelques 40 "sous-versions"!)
  2. Comment ajouter une application à l'objet "résultat", par exemple "électricité" avec ses propriétés réinitialisées?
  3. Comment ajouter une subversion à "paynpark", par ex. "taux fixe"?
  4. Comment modifier les propriétés d'une sous-mutation, par exemple, remplacer "releaseDate" de "GM-B-001" par "3/12/2012 14:46"?

Répondre

1

1.

var i=0; 
for (var j in result['banking6dig']) i++; 
alert('banking6dig has '+i+' subversions'): 

2.

result.electricity={} 

3.

paynpark.fixedRate={}; 

Merci AlienWebguy pour avoir signalé.

4.

result['banking6dig']["GM-B-001"]["releaseDate"]="3/12/2012 14:46"; 
+0

Les tableaux sont des objets dans JS. Vous pouvez ajouter n'importe quelle propriété que vous voulez. 'var foo = []; foo.foo = 'bar'; alerte (foo.foo); Tout ce que cela signifie, c'est que le prototype de 'foo' est Array au lieu de Object. – AlienWebguy

+0

@AlienWebguy Je me suis corrigé, je ne le savais pas et juste vérifié. Merci, éditer ma réponse. –

1
result = {"banking6dig":{"GM-B-001":{"releaseDate":"2/2/2012 14:44","noOfHex":"3","versInfo":"6 digit Banking"},"GM-B-002":{"releaseDate":"1/2/2012 14:46","noOfHex":"3","versInfo":"6 digit Banking with changes"}},"paynpark":[]}; 

var app = [], 
    svn = {}; 

for (var _app in result) { 
    if(result.hasOwnProperty(_app)){ 
     app.push(_app); 
     svn[_app] = []; 
     for (var _svn in result[_app]){ 
      if(result[_app].hasOwnProperty(_svn)){ 
       svn[_app].push(_svn); 
      } 
     } 
    } 
} 

// How man apps? 
alert(app.length); 

// How many subversions? 
alert(svn['banking6dig'].length); 

// Add an app 'electricity' 
result.electricity = {}; 

// Add subversion to paynpark 
result.paynpark.fixedRate = {} 

// Add electricity 
result.electricity = {}; 
app.push('electricity'); 

// Modify subversion 
result.banking6dig['GM-B-001'].releaseDate = '3/12/2012'; 

console.log(result); 

Démo: http://jsfiddle.net/AlienWebguy/DpCTP/

+0

wowwwwwwwww .... Je vais utiliser cela, merci beaucoup, SVP répondre si j'ai d'autres doutes ... – dinchakpianist

+0

Content de vous aider :) – AlienWebguy

Questions connexes