2016-08-29 6 views
-1

私はJavaScriptの関数型プログラミングの頭を抱かせようとしています。私の目標は、width=150height=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()は何のために呼び出されていないようです...) – nnnnnn

+0

あなたのコードは、あなたがプリントで何を意味するのでしょうか?あなたはdocument.writeを意味しましたか? –

+0

console.log(arr)は[[[[オブジェクト]]、[[オブジェクト]]、[[[オブジェクト]]、[[オブジェクト]]]]を表示しています。 – M00

答えて

-1

[OK]を、私はそれを考え出しました。 console.log(JSON.stringify(arr));は、使用している環境のrepl.itに値を表示しています。

関連する問題