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

Cod*_*kie 1 javascript jquery

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

var data = { 
             items1: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }], 
             items2: [{ id: 3, name: 'foo' }, { id: 4, name: 'bar' }] 
           };
Run Code Online (Sandbox Code Playgroud)

我正在尝试在数组列表items1中访问id:1的名称.

我觉得它会是这样的

data['items1']['id'].name 
Run Code Online (Sandbox Code Playgroud)

但我想我错过了一些东西.有人知道我可能做错了什么

Cha*_*had 5

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

要获取数组id的第一个元素,items1您将执行以下操作:

data.items1[0].id
Run Code Online (Sandbox Code Playgroud)

哪会回来1.

如果您想要搜索名称为"bar"的对象,items2您可以执行以下操作:

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'
Run Code Online (Sandbox Code Playgroud)

我强烈建议阅读有关JavaScript对象数组的内容.

  • 您可能需要阅读[javascript objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)以了解密钥的工作原理.做`data.items2`只是`data ['items2']`的糖,类似`var k ='items2'; data [k];`是一回事. (3认同)