数组无法访问元素?

我正在玩亚马逊的alexa技巧,并试图写我自己的。 我有一个技能的一些元素的数组,但我不能访问的元素。 我相信我已经做了一切正确的事情,而且我已经使用了一点点,但似乎没有任何工作?

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

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

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

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

有任何想法吗? 我相信这是简单的,但我的知识是不够的,实际上知道什么专门寻找解决它!

.filter过滤数组,它将删除与filter不匹配的值 ; 你会得到的还是一个包含多个对象的数组(因为谓词可能适用于数组中的多个值)。

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

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

Array.prototype.filter()创build一个新的数组,其中包含所有通过给定函数实现的testing的元素,所以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创build一个新的数组,其中包含传递它的函数返回true的元素。

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

您需要从数组中获取元素来读取其内容。

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

myArray.filter(function(v){ return v.name == requestedName; }); 是一个包含与您的filter匹配的对象的数组。 因为你只有一个对象,你可以像这样访问它:

 contentToRead[0].name