Как мне получить доступ к вложенным ключам в этом вложенном объекте javascript? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть следующий объект 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» имеет дваSubversion: «GM-B-001» и «GM-B-002»
«Paynpark» не имеет подрывных действий.

Кроме того, каждая subversion имеет свои собственные свойства, а именно: "releaseDate", "noOfHex" и "versInfo".

Этот "результат" объекта создается после запроса php, поэтому онможет иметь любое количество приложений и подрывных программ;однако формат ВСЕГДА одинаков.

Я пробовал это на jsFiddle: http://jsfiddle.net/2JLtZ/1/

  1. Как узнать количество «подрывных операций» в каждом «приложении»?(Я получаю около 40 «подрывов»!)
  2. Как добавить приложение к объекту «result», например, «электричество» с его сбросом свойств?
  3. Как добавить subversion в «paynpark», например «fixedRate»?
  4. Как изменить свойства subversions, например, изменить "releaseDate" для "GM-B-001" на "12.03.2012 14:46"?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012
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/

1 голос
/ 02 февраля 2012

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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...