2

私は次のマップを持っています。ここで、すべてのキーは、その値が次のjsonとしてリストされているマップです。

{
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
}​

私は次のことをしたい:

  1. マップを返すGetkey(get( "key2"))

  2. このマップのすべてのキーを確認します(ソースとターゲット)

  3. 結果リストの各項目を反復処理します(element1、element2)

どうすればこれを達成できますか?

4

3 に答える 3

5

jQueryを使用.each()してアイテムをループしkey2ます。

var obj = $.parseJSON(yourJSONString);

$.each(obj["key2"], function(key, value){
    console.log(key); // <-- source, target
    $.each(value, function(arrKey, arrValue){
        console.log(arrValue); // <-- element1, element2 etc etc
    });
});

ターゲットに指定する必要がなくkey2、すべての外部オブジェクトを調べたい場合は、次のようにします。

$.each(obj, function(outerKey, outerValue){
    console.log(outerKey); // <-- key, key2
    $.each(outerValue, function(key, value){
        console.log(key); // <-- source, target
        $.each(value, function(arrKey, arrValue){
            console.log(arrValue); // <-- element1, element2 etc etc
        });
    });
});

ネイティブJSON.parse()およびネストされたバニラfor(var=0; i<something.length; i++)ループを使用することで、jQueryなしでも同じことを実現できます。

于 2012-12-26T19:28:12.580 に答える
0
var o = {
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
}​
var key = o.key2;
for(p in key)
{
 elementArray = key[p];
 for(var i=0;i<elementArray.length;i++)
 {
   //access element 1 and 2 here
 }
}
于 2012-12-26T19:23:25.203 に答える
0

これがあなたが必要としていたものであるかどうかはわかりませんが、それはあなたを正しい道に導くはずです:

var things = {
  "key": {
    "source": ["element1", "element2"],
    "target": ["element1", "element2"]
  },
  "key2": {
    "source": ["element1"],
    "target": ["element1"]
  }
};

var get = function( key ) {
    var output = '';

    for( thisKey in things ) {
        if( thisKey === key ) {
            var myThing = things[ key ];

            for( thingKey in myThing ) {
                output += thingKey + ': ' + myThing[thingKey].join(', ') + '<br />';
            }

            return output;
        }
    }
}

document.write( get( 'key' ));
document.write('<hr />');
document.write( get( 'key2' ));

デモ: http: //jsfiddle.net/RucB3/

于 2012-12-26T19:42:56.743 に答える