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

Access object by name in array list

本文关键字:访问 对象 数组 列表      更新时间:2023-09-26

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

var data = { 
             items1: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }], 
             items2: [{ id: 3, name: 'foo' }, { id: 4, name: 'bar' }] 
           };

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

我以为会是这样的

data['items1']['id'].name 

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

这是一个

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

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

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对象和数组的信息。

只能通过数组项的数字索引访问数组项。例如:

// 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;

由于 items1 是数组,您应该编写:

data.items1[0].name

试试这个data['items1'][0].name