根据JavaScript中的属性值从对象数组中选择[重复]

Posted

技术标签:

【中文标题】根据JavaScript中的属性值从对象数组中选择[重复]【英文标题】:Select from array of objects based on property value in JavaScript [duplicate] 【发布时间】:2012-01-08 12:52:25 【问题描述】:

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

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

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

【问题讨论】:

您需要显示您尝试从中选择的实际 JSON 数据,以便我们能够建议如何访问它。 【参考方案1】:

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

查找数组中满足过滤函数的元素。原数组不受影响。

所以是这样的:

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

这将在数组matches 中留下一组来自ObjectsList 的匹配条目。以上假设ObjectsList 具有这样的结构:

[
     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 循环方法有很多变体,很多人会向我摇手指,因为他们认为 continue 是一个坏词;如果你不喜欢continue,那么你可以这样做:

for(var i = 0, m = null; i < ObjectsList.length; ++i) 
    if(ObjectsList[i].id == wanted_id) 
        m = ObjectsList[i];
        break;
    

【讨论】:

这个技巧只需将 [0] 放在末尾以选择与过滤器匹配的新数组的第一个元素。

以上是关于根据JavaScript中的属性值从对象数组中选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过属性值从对象数组中获取JavaScript对象[重复]

通过属性值从对象数组中获取JavaScript对象[重复]

TypeScript - 根据属性值从数组中取出对象

根据特定值从数组中选择项目

Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值

Nodejs mongoose根据对象属性选择嵌套数组中的对象