函数式 Javascript 算法不从过滤器返回预期结果
Functional Javascript algorithm not returning the expected result from a filter
我正在Javascript中练习使用map(),filter()和concatAll()。 我希望下面的代码返回以下内容:
[{
"id": 70111470,
"title": "Die Hard",
"boxart":"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg"
}]
它没有从框艺术中提取 URL,我不确定为什么。运行代码时,我得到以下输出:
[{"id": 70111470,"title": "Die Hard"}]
function() {
var movieLists = [
{
name: "Instant Queue",
videos : [
{
"id": 70111470,
"title": "Die Hard",
"boxarts": [
{ width: 150, height:200, url:"http://cdn-0.nflximg.com/images/2891/DieHard150.jpg" },
{ width: 200, height:200, url:"http://cdn-0.nflximg.com/images/2891/DieHard200.jpg" }
],
"url": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
}
]
}
];
getBoxart = function(boxart){
return boxart.width==150;
};
getVideoData = function(video){return {id: video.id,
title: video.title,
boxart: video.boxarts.filter(getBoxart).url}
};
getVideos = function(movie){return movie.videos.map(getVideoData)}
return movieLists.map(getVideos).concatAll();
}
问题是这一行:video.boxarts.filter(getBoxart).url
过滤器返回一个 boxarts 数组(没有 url 属性)
您要么需要在过滤器后映射以返回 URL 数组,要么只需获取第一个 URL
那是因为
video.boxarts.filter(getBoxart)
返回一个数组(如果这是 filter
的本机实现,但也可能用于任何其他实现),然后执行
video.boxarts.filter(getBoxart).url
返回undefined
,因为数组没有url
属性...
您可能需要执行以下操作:
video.boxarts.filter(getBoxart)[0].url
相关文章:
- JSONP请求返回结果,但也触发error_callback
- async问题,JS Promise无法返回结果,但可以使用console.log
- Meteor js-控制台显示'未定义'即使返回结果
- 正在等待HTTP调用从函数返回结果
- 使用函数for循环遍历对象以更改值,然后返回结果
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- Javascript 函数不返回结果
- 用逗号分隔返回结果中的对象
- 需要呈现MongoDB查询返回结果的特定索引/位置
- HTML5 文件阅读器如何返回结果
- javascript循环遍历列表项,并在数组中返回结果
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- 在angularjs工厂中,如何在函数解析后返回结果
- 我在jQuery中的Rock Paper Scissors程序只在平局时返回结果
- 如何使用ajax调用php并返回结果
- 添加第二维度的Javascript未返回结果
- Node.js没有返回结果
- jquery裁剪图像selction未返回结果
- 如何在phonegap javascript函数中返回结果
- 如果文本筛选器在ng重复中未返回结果,则显示消息