在对象数组中查找特定键值

时间:2013-02-11 23:20:27

标签: javascript arrays node.js

这是代码:

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

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

我想获取id为“qb45657s”的名称值,如何实现?我想通过所有数组的明显循环并检查它是否相等但有更简单的方法吗?

编辑:我无法将“数组”更改为对象,因为我需要知道它的长度以用于其他功能。

2 个答案:

答案 0 :(得分:14)

您只需过滤给定的ID:

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

这将返回[{"id":"qb45657s","name":"Use me."}]

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