根据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中的属性值从对象数组中选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章