函数式Javascript算法未从筛选器返回预期结果

函数式Javascript算法未从筛选器返回预期结果,javascript,Javascript,我正在练习在Javascript中使用map()、filter()和concatAll()。我希望下面的代码返回以下内容: [{ "id": 70111470, "title": "Die Hard", "boxart":"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg" }] 它不是从boxart中提取URL,我不知道为什么。我在运行代码时得到以下输出: [{"id": 70111470,"title": "Die

我正在练习在Javascript中使用map()、filter()和concatAll()。我希望下面的代码返回以下内容:

[{
   "id": 70111470,
   "title": "Die Hard",
   "boxart":"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg" 
}]
它不是从boxart中提取URL,我不知道为什么。我在运行代码时得到以下输出:

[{"id": 70111470,"title": "Die Hard"}]

问题是这一行:
video.boxart.filter(getBoxart.url

筛选器正在返回boxarts数组(该数组没有url属性)


您需要在筛选器之后映射以返回url数组,或者只获取第一个url,问题是这一行:
video.boxart.filter(getBoxart.url

筛选器正在返回boxarts数组(该数组没有url属性)

您要么需要在筛选器之后映射以返回URL数组,要么只获取第一个URL,这是因为

video.boxarts.filter(getBoxart)
返回一个数组(如果这是
过滤器的本机实现,但可能也用于任何其他实现),然后执行以下操作

video.boxarts.filter(getBoxart).url
返回未定义的
,因为数组没有
url
属性

您可能需要执行以下操作:

video.boxarts.filter(getBoxart)[0].url
那是因为

video.boxarts.filter(getBoxart)
返回一个数组(如果这是
过滤器的本机实现,但可能也用于任何其他实现),然后执行以下操作

video.boxarts.filter(getBoxart).url
返回未定义的
,因为数组没有
url
属性

您可能需要执行以下操作:

video.boxarts.filter(getBoxart)[0].url

concatAll
从哪里来?如果没有
concatAll
我会得到一个额外的数组:
[{id:70111470,title:'Die Hard',boxart:'http://cdn-0.nflximg.com/images/2891/DieHard150.jpg{id:654356453,标题:'坏男孩',boxart:'http://cdn-0.nflximg.com/images/2891/BadBoys150.jpg' } ],   [ {id:65432445,标题:'会议厅',boxart:'http://cdn-0.nflximg.com/images/2891/TheChamber150.jpg“},{id:675465,标题:'断裂',boxart:'http://cdn-0.nflximg.com/images/2891/Fracture150.jpg“}]
concatAll
从哪里来?如果没有
concatAll
我会得到一个额外的数组:
[[{id:70111470,标题:'Die Hard',boxart:'http://cdn-0.nflximg.com/images/2891/DieHard150.jpg{id:654356453,标题:'坏男孩',boxart:'http://cdn-0.nflximg.com/images/2891/BadBoys150.jpg' } ],   [ {id:65432445,标题:'会议厅',boxart:'http://cdn-0.nflximg.com/images/2891/TheChamber150.jpg“},{id:675465,标题:'断裂',boxart:'http://cdn-0.nflximg.com/images/2891/Fracture150.jpg“}]
正如您所建议的,我最终使用了一个映射。
video.boxart.filter(getBoxart.map)(函数(bA){return bA.url;}).toString()
正如您所建议的,我最终使用了一个映射。
video.boxart.filter(getBoxart.map)(函数(bA){return bA.url;}).toString()