根据JavaScript中的属性值从对象数组中选择

根据JavaScript中的属性值从对象数组中选择,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一些JSON对象,它们有几个属性,比如id和名称。我将它们存储在一个JavaScript数组中,然后基于dropdownlist,我希望根据其id从JavaScript数组中检索对象 假设一个对象有id和名称,如何从数组变量中选择它们 var ObjectsList = data; var id = $("#DropDownList > option:selected").attr("value"); ObjectsList["id=" + id]; 因为您已经有了jQuery,所以

我有一些JSON对象,它们有几个属性,比如id和名称。我将它们存储在一个JavaScript数组中,然后基于dropdownlist,我希望根据其id从JavaScript数组中检索对象

假设一个对象有id和名称,如何从数组变量中选择它们

var ObjectsList = data;
var id = $("#DropDownList > option:selected").attr("value");
ObjectsList["id=" + id];

因为您已经有了jQuery,所以可以使用:

查找满足筛选函数的数组元素。原始阵列不受影响

比如说:

var matches = $.grep(ObjectsList, function(e) { return e.id == id });
[
    { id: ... },
    { id: ... },
    ...
]
这将为您留下一个匹配项数组,这些匹配项来自数组
matches
中的
ObjectsList
。以上假设
ObjectsList
具有如下结构:

var matches = $.grep(ObjectsList, function(e) { return e.id == id });
[
    { id: ... },
    { id: ... },
    ...
]
如果您知道只有一个匹配项,或者您只想要第一个匹配项,则可以这样做:

for(var i = 0, m = null; i < ObjectsList.length; ++i) {
    if(ObjectsList[i].id != wanted_id)
        continue;
    m = a[i];
    break;
}
// m is now either null or the one you want
for(var i = 0, m = null; i < ObjectsList.length; ++i) {
    if(ObjectsList[i].id == wanted_id) {
        m = ObjectsList[i];
        break;
    }
}

您需要显示您正试图从中选择的实际JSON数据,以便我们能够建议如何访问它。这样做的技巧只是将[0]放在最后,以选择与筛选器匹配的新数组的第一个元素。