2

これはコードです:

var groups = {
    "JSON":{
        "ARRAY":[
            {"id":"fq432v45","name":"Don't use me."},

            {"id":"qb45657s","name":"Use me."}
        ]
    }
}

idが「qb45657s」の名前の値を取得したいのですが、どうすればこれを実現できますか?私はすべての配列を通る明らかなループを考え出し、それが等しいかどうかを確認しましたが、もっと簡単な方法はありますか?

編集:別の関数の長さを知る必要があるため、「配列」をオブジェクトに変更できません。

4

2 に答える 2

14

指定されたIDでフィルタリングするだけです。

groups["JSON"]["ARRAY"].filter(function(v){ return v["id"] == "qb45657s"; });

これは戻ります[{"id":"qb45657s","name":"Use me."}]

于 2013-02-11T23:24:39.293 に答える
0

このような有効なJSON文字列があると仮定します(囲み{}または有効にする必要があるため、有効と言い[]ます)。

var json = '{"JSON":{
        "ARRAY":[
            {"id":"fq432v45","name":"Don't use me."},
            {"id":"qb45657s","name":"Use me."}
        ]
    }
}';

次のような実際のオブジェクトに解析するだけです。

var jsonObj = JSON.parse(json); // makes string in actual object you can work with
var jsonArray = jsonObj.JSON.ARRAY; // gets array you are interested in

そして、次のように検索します。

var needle = 'qb45657s';
var needleName;
for (var i = 0; i < jsonArray.length; i++) {
    if (jsonArray[i].id === needle) {
        needleName = jsonArray[i].name;
    }
}
于 2013-02-11T23:29:13.020 に答える