数组不能访问元素

Array cannot access elements?

本文关键字:元素 访问 不能 数组      更新时间:2023-09-26

我正在玩亚马逊alexa技能,并试图写我自己的。我有一些技能元素的数组,但我无法访问这些元素。我相信我已经做了正确的一切,我已经谷歌了相当多,但似乎没有工作?!

var myArray = [
    { "name" : "matt",    "content" : "this is about matt" },
    { "name" : "james",   "content" : "this is about james" },
];

然后我有一些基于用户输入的代码,它使用名称作为查找器。

var requestedName = "matt";
var contentToRead = myArray.filter(function(v){ return v.name == requestedName; });
console.log("I'll read back, " + contentToRead.content);

上面的console.log返回为未定义。我试图解析结果到一个数组,但没有我尝试似乎工作。

任何想法?我确信这是一个简单的问题,但我的知识不足以真正知道具体要寻找什么来解决它!!

.filter过滤数组,它删除不匹配过滤器的值;返回的结果仍然是一个包含多个对象的数组(因为谓词可以应用于数组中的多个值)。

您想要的行为,返回第一个匹配,在.find中实现:

var contentToRead = myArray.find(function (v) { return v.name == requestedName; });

array .prototype.filter()创建一个包含所有通过给定函数实现的测试的元素的新数组,因此contentToRead是一个数组:

var myArray = [
    { "name" : "matt",    "content" : "this is about matt" },
    { "name" : "james",   "content" : "this is about james" },
];
var requestedName = "matt";
var contentToRead = myArray.filter(function(v) { return v.name === requestedName; });
  
// You can loop over contentToRead array
contentToRead.forEach(function(item) {
  console.log("I'll read back, " + item.content);
});

filter创建一个新的数组,其中包含您传递给它的函数返回true的元素。

content不是数组的属性,它是数组中的每个对象的属性。

你需要从数组中取出元素来读取它们的内容。

contentToRead.forEach(function (currentValue) {
    console.log("I'll read back, " + currentValue.content);
});

myArray.filter(function(v){ return v.name == requestedName; });返回的值是一个数组,其中包含与您的过滤器匹配的对象。由于其中只有一个对象,您可以这样访问它:

contentToRead[0].name