我一直在使用Github上的study guide,我正在努力解决链过滤和映射以解决问题的问题。所以,我有一个数组,我应该使用这两种方法来选择评级为5.0的视频的ID。这是阵列:
function() {
var newReleases = [
{
"id": 70111470,
"title": "Die Hard",
"boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 654356453,
"title": "Bad Boys",
"boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id:432534, time:65876586 }]
},
{
"id": 65432445,
"title": "The Chamber",
"boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 675465,
"title": "Fracture",
"boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id:432534, time:65876586 }]
}
];
现在我的代码如下:
newReleases.filter(function(video){
return video.rating == 5.0;
}).map (function(video) {
return { id: video.id }
});
}
我的思维过程是我首先调用filter方法并应用测试(video.rating == 5.0)并返回通过测试的元素。然后我使用map方法将一个函数应用于通过测试的元素,以返回我想要的内容,具有5.0评级的视频的ID,通过地图返回" video.id'。现在当我执行时,我收到了这个错误:
TypeError:' undefined'不是一个对象(评估' videoids.sortBy')
这个错误代码真的让我失望,因为我没有看到' videoids
'数组中的变量并不表示我需要应用.SortBy
。
所以我要求澄清错误代码。我也尝试了许多不同的时尚代码,并没有提出正确的代码,所以我真的很感激我不会做的事情。我对我的代码充满信心的原因是因为我在第5章末尾的 [Eloquent Javascript]中应用了一个非常相似的代码(练习5.2母子年龄差异)。我花了几个小时(比我想承认的更多)坚持这个,我已经浏览了堆栈溢出大约两个小时。我可以轻松按下获取答案按钮,但我担心通过这样做我不会学到任何东西。
有人可以帮助我吗?
答案 0 :(得分:2)
请添加return
。否则你undefined
返回。
return newReleases.filter(function(video) {
//...
答案 1 :(得分:0)
你必须做错事,因为这对我有用。请参阅https://jsfiddle.net/887mfh10/1/。
var newReleases = [
{
"id": 70111470,
"title": "Die Hard",
"boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 654356453,
"title": "Bad Boys",
"boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id:432534, time:65876586 }]
},
{
"id": 65432445,
"title": "The Chamber",
"boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 4.0,
"bookmark": []
},
{
"id": 675465,
"title": "Fracture",
"boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
"uri": "http://api.netflix.com/catalog/titles/movies/70111470",
"rating": 5.0,
"bookmark": [{ id:432534, time:65876586 }]
}
];
var ids = newReleases.filter(function(video){
return video.rating == 5.0;
}).map (function(video) {
return { id: video.id }
});
alert(JSON.stringify(ids)); // see console