Я работаю через study guide на Github, и я пытаюсь решить проблему, которая связывает фильтр и карту, чтобы получить ответ. Итак, у меня есть массив, и я должен использовать два метода для выбора идентификаторов видео с рейтингом 5.0. Вот массив:Объединение методов filter() и map() в javascript
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 }
});
}
Мой мыслительный процесс, я первый вызов метода фильтра и применить тест (video.rating == 5,0) и вернуть элементы, которые проходят тест. Затем я использую метод map для применения функции к элементам, которые передали тест, чтобы вернуть то, что я хочу, идентификаторы видео с рейтингом 5.0, с помощью map return 'video.id'. Теперь, когда я исполняю, я получаю эту ошибку:
TypeError: 'undefined' is not an object (evaluating 'videoids.sortBy')
Этот код ошибки действительно бросает меня, потому что я не вижу «videoids
» переменной в массиве, и это не кажется, что мне нужно примените .SortBy
.
Так что я прошу уточнить код ошибки, пожалуйста. Я также пробовал этот код в разных моделях и не придумал правильного, поэтому я был бы очень благодарен за то, что я не делаю. Причина, по которой я чувствую себя уверенно в своем коде, заключается в том, что я применил очень похожий код к очень похожим упражнениям в [Eloquent Javascript] в конце главы 5 (упражнение 5.2. Разница в возрасте матери и ребенка). Я потратил несколько часов (больше, чем я хотел бы признать), застрял на этом, и я просмотрел переполнение стека около двух часов. Я мог бы легко нажать кнопку получения ответа, но я боюсь, что я ничего не узнаю, сделав это.
Может ли кто-нибудь помочь мне?
Код как вы написали, он отлично работает - https://jsfiddle.net/yvy06sn1/ В вашем коде должно быть что-то еще. –
работает здесь также и в Chrome, в какой ОС, в браузере? Перезагрузите компьютер и повторите попытку! – Gavriel
Я запускаю код через учебное пособие. Я запускаю его на сафари ver. 6.1.3 (не мой компьютер). Я пытался перезапустить, к сожалению, не работал. Спасибо, что ответили! – Phil