按数组列表中的名称访问对象

时间:2013-09-22 05:57:22

标签: javascript jquery

我有一个包含对象数组列表的对象。我想获得数组列表中对象的值。

例如

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 

但我觉得我错过了一些东西。任何人都知道我可能做错了什么

4 个答案:

答案 0 :(得分:5)

这是一个包含2个键(items1items2)的对象,两个键都是数组。每个数组中都有作为对象的元素,每个元素包含2个键(idname)。

要获取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 ObjectsArrays

答案 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