2016-08-29 5 views
-1

Я пытаюсь обернуть голову функциональным программированием в JavaScript. Моя цель состоит в том, чтобы получить объекты объектов-боксатов с width=150 и height=200.Вложенные методы карты и фильтра

Console.log(arr) 

отображает

[ [ [ [Object] ], [ [Object] ] ], 
[ [ [Object] ], [ [Object] ] ] ] 

Я не знаю, почему я не могу напечатать фактические значения . ConcatAll метод используется для выравнивания массивов. Я работаю над учебником reactivex.io по функциональному программированию.

Array.prototype.concatAll = function() { 
 
var results = []; 
 
this.forEach(function(subArray) { 
 
\t subArray.forEach(function(item){ 
 
    \t results.push(item); 
 
}); 
 
}); 
 

 
return results; 
 
}; 
 

 
var movieLists = [ 
 
\t \t { 
 
\t \t \t name: "Instant Queue", 
 
\t \t \t videos : [ 
 
\t \t \t \t { 
 
\t \t \t \t \t "id": 70111470, 
 
\t \t \t \t \t "title": "Die Hard", 
 
\t \t \t \t \t "boxarts": [ 
 
\t \t \t \t \t \t { width: 150, height: 200, url: "http://cdn-0.nflximg.com/images/2891/DieHard150.jpg" }, 
 
\t \t \t \t \t \t { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/DieHard200.jpg" } 
 
\t \t \t \t \t ], 
 
\t \t \t \t \t "url": "http://api.netflix.com/catalog/titles/movies/70111470", 
 
\t \t \t \t \t "rating": 4.0, 
 
\t \t \t \t \t "bookmark": [] 
 
\t \t \t \t }, 
 
\t \t \t \t { 
 
\t \t \t \t \t "id": 654356453, 
 
\t \t \t \t \t "title": "Bad Boys", 
 
\t \t \t \t \t "boxarts": [ 
 
\t \t \t \t \t \t { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/BadBoys200.jpg" }, 
 
\t \t \t \t \t \t { width: 150, height: 200, url: "http://cdn-0.nflximg.com/images/2891/BadBoys150.jpg" } 
 

 
\t \t \t \t \t ], 
 
\t \t \t \t \t "url": "http://api.netflix.com/catalog/titles/movies/70111470", 
 
\t \t \t \t \t "rating": 5.0, 
 
\t \t \t \t \t "bookmark": [{ id: 432534, time: 65876586 }] 
 
\t \t \t \t } 
 
\t \t \t ] 
 
\t \t }, 
 
\t \t { 
 
\t \t \t name: "New Releases", 
 
\t \t \t videos: [ 
 
\t \t \t \t { 
 
\t \t \t \t \t "id": 65432445, 
 
\t \t \t \t \t "title": "The Chamber", 
 
\t \t \t \t \t "boxarts": [ 
 
\t \t \t \t \t \t { width: 150, height: 200, url: "http://cdn-0.nflximg.com/images/2891/TheChamber150.jpg" }, 
 
\t \t \t \t \t \t { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/TheChamber200.jpg" } 
 
\t \t \t \t \t ], 
 
\t \t \t \t \t "url": "http://api.netflix.com/catalog/titles/movies/70111470", 
 
\t \t \t \t \t "rating": 4.0, 
 
\t \t \t \t \t "bookmark": [] 
 
\t \t \t \t }, 
 
\t \t \t \t { 
 
\t \t \t \t \t "id": 675465, 
 
\t \t \t \t \t "title": "Fracture", 
 
\t \t \t \t \t "boxarts": [ 
 
\t \t \t \t \t \t { width: 200, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture200.jpg" }, 
 
\t \t \t \t \t \t { width: 150, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture150.jpg" }, 
 
\t \t \t \t \t \t { width: 300, height: 200, url: "http://cdn-0.nflximg.com/images/2891/Fracture300.jpg" } 
 
\t \t \t \t \t ], 
 
\t \t \t \t \t "url": "http://api.netflix.com/catalog/titles/movies/70111470", 
 
\t \t \t \t \t "rating": 5.0, 
 
\t \t \t \t \t "bookmark": [{ id: 432534, time: 65876586 }] 
 
\t \t \t \t } 
 
\t \t \t ] 
 
\t \t } 
 
\t ]; 
 

 
var arr = movieLists.map(function(movieList) { 
 
\t return movieList.videos.map(function(video) { 
 
\t \t return video.boxarts.filter(function(boxart) { 
 
\t \t \t return boxart.width === 150; 
 
\t \t }); 
 
\t }); 
 
}); 
 

 
console.log(arr);

+1

* «Но мой код возвращает массив со словами« объект ». * Какие слова объекты? Код, который вы на самом деле показываете, работает. Вы даже сказали, что это работает при использовании 'console.log()'. Итак, что вы подразумеваете под неспособностью «печатать»? Пожалуйста, отредактируйте свой вопрос, чтобы более четко объяснить, что происходит, и добавьте какой-либо код, связанный с неправильным поведением. (Что такое 'concatAll()' for? Кажется, что он не вызван вообще ...) – nnnnnn

+0

ваш код работает, что вы подразумеваете под печатью? Вы имели в виду document.write? –

+0

console.log (arr) отображает [[[[Object]], [[Object]]], [[[Object]], [[Object]]]]. – M00

ответ

-1

Хорошо, я понял. console.log(JSON.stringify(arr)); отображает значения в repl.it, среде, которую я использую.

Смежные вопросы