我在javascript中有一个像这样的对象数组:
var events =
[
{
id: 'a',
title: 'Event 1 title'
},
{
id: 'b',
title: 'Event 2 title'
}
];
为了引用事件b,我必须知道事件b的索引,我可以通过循环遍历数组并在事件的id与b匹配时检查事件的索引是什么。 / p>
当我知道事件的id属性时,是否有更简单的方法来引用事件b?
答案 0 :(得分:2)
为了引用事件b,我必须知道事件b的索引
不一定。您可以使用Array.filter
获取所需的对象,而无需了解它的索引。
var obj = events.filter(function(obj){
return obj.id == "b";
})[0]
或者您也可以使用ES6中新增的Array.prototype.find
var obj = events.find((obj) => obj.id == "b");
答案 1 :(得分:1)
是,不要将其存储为列表,将其存储为对象:
var events = {'a': 'Event title 1', 'b': 'Event title 2'}
然后像这样使用它:
events['a']
答案 2 :(得分:1)
您可以在事件列表中的对象的ID上构建索引:
> var events = [{
... id: 'a',
... title: 'Event 1 title'
... }, {
... id: 'b',
... title: 'Event 2 title'
... }];
> var index = {};
> events.forEach(function(v, i) { index[v.id] = i; });
> index
{ a: 0, b: 1 }
> events[index['b']]
{ id: 'b', title: 'Event 2 title' }
答案 3 :(得分:0)
检查jQuery documentation以获取此方法。
var result = $.grep(myArray, function(e){ return e.id == id; });