在数组列表中按名称访问对象
Access object by name in array list
我有一个包含对象数组列表的对象。我想在数组列表中获取对象的值。
例
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 个键(items1
和 items2
)的对象,这两个键都是数组。每个数组中都是作为对象的元素,每个元素包含 2 个键(id
和 name
)。
要获取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
相关文章:
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- 使用js或extjs访问对象的java列表
- Javascript-访问对象
- 访问对象的最简单方法'的单独财产
- 分析云代码访问对象
- 如何从字符串变量访问对象属性
- 访问对象中的数组
- 如何访问对象's成员通过另一种方法填充的方法
- 访问对象内的数组
- 是否可以在定义对象时访问对象值
- Javascript 无法访问对象的属性
- $.each 中的“this”,当需要使用“this”访问对象的函数时
- 函数中的 angularJS 访问对象属性不起作用
- 通过存储在变量中的名称访问对象
- 访问对象内部的数组
- 如何从类函数内部访问对象属性
- 访问对象和指定变量
- Javascript - 使用 for 时遇到问题.以循环访问对象
- 为什么可以在内部函数成员中访问对象引用,而不能在内部属性成员中访问
- 当对象的键中有冒号时,如何访问对象属性