2012-02-02 187 views
0

我有以下javascript對象:如何訪問此嵌套JavaScript對象中的嵌套鍵?

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":[] 
} 

說明:

「banking6dig」 和 「paynpark」 是應用
「banking6dig」 有兩個子版本: 「GM-B-001」 和「GM-B-002」
「paynpark」沒有顛覆。

此外,每個subversion都有自己的屬性,即「releaseDate」,「noOfHex」和「versInfo」。

該對象的「結果」是在php請求之後構建的,所以它可以包含任意數量的應用程序和子版本;但是格式總是一樣的。

我曾經嘗試這樣做對的jsfiddle:http://jsfiddle.net/2JLtZ/1/

  1. 我如何找出「顛覆」的數量在每一個「應用程序」? (我得到了一些40「顛覆」!)
  2. 如何添加一個應用程序的對象「結果」,例如,「電」與其屬性重置?
  3. 如何添加一個顛覆到「paynpark」,例如「固定利率」?
  4. 如何修改subversions屬性,例如將「GM-B-001」的「releaseDate」更改爲「2012年3月12日14:46」?

回答

1

1.

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

2.

result.electricity={} 

3.

paynpark.fixedRate={}; 

感謝AlienWebguy指出這一點。

4.

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

數組是在JS對象。你可以添加你想要的任何屬性。 'var foo = []; foo.foo ='bar';警報(foo.foo);'。它意味着'foo'的原型是Array而不是Object。 – AlienWebguy 2012-02-02 19:16:03

+0

@AlienWebguy我站在糾正,不知道,只是驗證它。謝謝,編輯我的答案。 – 2012-02-02 19:39:36

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); 

演示:http://jsfiddle.net/AlienWebguy/DpCTP/

+0

wowwwwwwwww ....生病了,非常感謝,請回復,如果我有進一步的疑問... – dinchakpianist 2012-02-02 19:11:12

+0

很高興幫助:) – AlienWebguy 2012-02-02 19:16:27