开发者问题收集

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

2017-07-27
828

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

标签是对象数组:

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

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

  [{…}]

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

所以除了使用

console.log(Object(fullTag[0]).tag);

在所有其他情况下我都得到了未定义的......为什么会这样?!我可以发誓直到昨天我还可以使用 fullTag.tag 访问它...有人可以解释一下吗?

1个回答

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

因此,在 filter 一个 array 之后,即使只有一个 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);

现在,您可以按照 希望 的方式访问您的 tag 属性。

console.log(fullTag.tag);
Mihai Alexandru-Ionut
2017-07-27