我有一个包含对象数组列表的对象。我想获得数组列表中对象的值。
例如
var data = {
items1: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }],
items2: [{ id: 3, name: 'foo' }, { id: 4, name: 'bar' }]
};
我正在尝试在数组列表items1中访问id:1的名称。
我认为它会像
data['items1']['id'].name
但我觉得我错过了一些东西。任何人都知道我可能做错了什么
答案 0 :(得分:5)
这是一个包含2个键(items1
和items2
)的对象,两个键都是数组。每个数组中都有作为对象的元素,每个元素包含2个键(id
和name
)。
要获取id
数组的第一个元素items1
,您需要执行此操作:
data.items1[0].id
将返回1
。
如果您想在items2
中搜索名称为“bar”的对象,您可以执行以下操作:
function find(item, name) {
//no such array
if(!data[item])
return;
//search array for key
var items = data[item];
for(var i = 0; i < items.length; ++i) {
//if the name is what we are looking for return it
if(items[i].name === name)
return items[i];
}
}
var obj = find('items2', 'bar');
obj.id; //4
obj.name; //'bar'
我强烈建议您阅读JavaScript Objects和Arrays。
答案 1 :(得分:2)
由于items1是数组,你应该写:
data.items1[0].name
答案 2 :(得分:2)
您只能通过数字索引访问数组项。例如:
// The first item in the array
data['items1'][0].name
// The second
data['items1'][1].name
如果你想通过id查找,你可以为你做一些小功能:
function getItemById(anArray, id) {
for (var i = 0; i < anArray.length; i += 1) {
if (anArray[i].id === id) {
return anArray[i];
}
}
}
var theName = getItemById(data['items1'], 1).name;
答案 3 :(得分:1)
试试这个data['items1'][0].name