2012-02-02 130 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