关于jquery:根据JavaScript中的属性值从对象数组中进行选择

Select from array of objects based on property value in JavaScript

本问题已经有最佳答案,请猛点这里访问。

我有JSON对象,它有几个属性,如id和name。 我将它们存储在JavaScript数组中,然后基于下拉列表,我想根据其id从JavaScript数组中检索对象。

假设一个对象有id和name,我如何从我的数组变量中选择它们?

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


既然你已经有了jQuery,你可以使用$.grep

Finds the elements of an array which satisfy a filter function. The original array is not affected.

所以像这样:

1
var matches = $.grep(ObjectsList, function(e) { return e.id == id });

这将为您提供数组matchesObjectsList的匹配条目数组。 以上假设ObjectsList具有如下结构:

1
2
3
4
5
[
    { id: ... },
    { id: ... },
    ...
]

如果您知道只有一场比赛或者您只想要第一场比赛,那么您可以这样做:

1
2
3
4
5
6
7
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循环方法有很多变化,很多人都会嘲笑我,因为他们认为continue是一个坏词; 如果你不喜欢continue那么你可以这样做:

1
2
3
4
5
6
for(var i = 0, m = null; i < ObjectsList.length; ++i) {
    if(ObjectsList[i].id == wanted_id) {
        m = ObjectsList[i];
        break;
    }
}