无法访问数组中的单个对象?

Posted

技术标签:

【中文标题】无法访问数组中的单个对象?【英文标题】:Cant access single object in array? 【发布时间】:2018-01-03 17:14:49 【问题描述】:

嗨,我在访问数组中的对象时遇到问题...我不知道是因为我更新了 Chrome 还是因为我添加了,然后从我的 React 应用程序中删除了 Preact。问题是这样的:

标签是对象数组:

var fullTag = tags.filter(tag => tag.tagId==tagId);
console.log(fullTag);

结果我在控制台中得到了这个:

  […]

当我展开它时,我得到这个:(图片)

所以除了

之外没有其他方法可以访问它
console.log(Object(fullTag[0]).tag);

在所有其他方面我都不确定......这是为什么?!我可以发誓直到昨天我都可以使用 fullTag.tag 访问它...有人可以解释一下吗?

【问题讨论】:

您的图片显示它是一个数组,这就是您无法访问其成员的原因。 我可以发誓直到昨天我都可以使用 fullTag.tag 访问它 - 除非你的代码昨天不同,不。 【参考方案1】:

filter() 方法创建一个新数组,其中包含所有通过提供的 回调 函数实现的测试的元素。

所以,在你filterarray 之后,即使只有一个item 通过test 函数,你也会得到另一个array。这就是您无法使用fullTag.tag 访问它的原因。

解决方案是使用其index 访问一个元素。

let tags=["id":1,"tag":"tag1","id":2,"tag":"tag2"];
let tagId=1;
var fullTag = tags.filter(tag => tag.id==tagId);
console.log(fullTag);
console.log(Object(fullTag[0]).tag);

如果tagId 属性在您的数组中是唯一的,您可以使用find 方法。

var fullTag = tags.find(tag => tag.id==tagId);

现在您可以像 wished 那样访问您的 tag 属性。

console.log(fullTag.tag);

【讨论】:

@Ivan,也许你使用了find 方法。 我想 tagId 在你的数组中是唯一的。所以,你可以像我的回答一样使用它。

以上是关于无法访问数组中的单个对象?的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA将数组变量插入到访问中的单个字段中

无法从 Handlebars 中的数组访问对象属性

无法将存储数据访问到 vuex 中的组件中

关于arguments的用法

无法从 Mongoose 访问 populate()'d 对象的属性?

错误 #1009:无法访问空对象引用 AS3 项目的属性或方法