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 回答