如何访问此嵌套javascript对象中的嵌套键?

时间:2012-02-02 18:44:11

标签: javascript object nested

我有以下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. 如何将subversion添加到“paynpark”,例如“固定利率”?
  4. 如何修改子版本属性,例如将“GM-B-001”的“releaseDate”更改为“3/12/2012 14:46”?

2 个答案:

答案 0 :(得分: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";

答案 1 :(得分: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/