2017-08-28 10 views
0

私はそれがキーのすべてを含むすべての値の配列を返す、リスト内の各値を覗くということUnderscore.jsで_.whereについての基本的な知っている内部配列をプロパティとして取得するには_.where(リスト、プロパティ)を使用する方法?

var listOfPlays = classRoom: [ 
    { 
     title: "Dollhouse", 
     femaleLead: true, 
     student: [ 
      { name: "Echo", role: "doll" }, 
      { name: "Topher", role: "mad scientist" } 
     ] 
    }, 
    { 
     title: "Dr. Horrible's Sing-Along Blog", 
     student: [ 
      { name: "Billy", role: "mad scientist" }, 
      { name: "Penny", role: "love interest" } 
     ] 
    } 
] 

以下のように私はJSON構造を持っています値のペアはプロパティにリストされます。

たとえば、_.where(listOfPlays, {title: "Dollhouse"});は、タイトルが「ドールハウス」のオブジェクトを返しますが、の学生の配列の値はどのようにオブジェクトベースになりますか? listOfPlaysから?

私のようなものを探しています:

_.where(listOfPlays , {student: [name : "Echo"]});** 
+0

'[名: "エコー"]' JSには有効ではありません。あなたは '[{name:" Echo "}"を意味しましたか? (それでもAFAIKは動作しませんが、少なくとも構文エラーではありません)。 – Amadan

答えて

1

あなたが探している_.where(listOfPlays , {student: [name : "Echo"]});新しいバージョンではもう動作しない方法。

を使用でき

_.filter真実テスト(述語)を通過し、すべての値の配列を返す、リスト内の各値を覗く

_.some値のいずれかの場合にtrueを返します。リスト内の述語真理テストに合格する。

var listOfPlays = [{ 
 
    title: "Dollhouse", 
 
    femaleLead: true, 
 
    student: [{ 
 
     name: "Echo", 
 
     role: "doll" 
 
     }, 
 
     { 
 
     name: "Topher", 
 
     role: "mad scientist" 
 
     } 
 
    ] 
 
    }, 
 
    { 
 
    title: "Dr. Horrible's Sing-Along Blog", 
 
    student: [{ 
 
     name: "Billy", 
 
     role: "mad scientist" 
 
     }, 
 
     { 
 
     name: "Penny", 
 
     role: "love interest" 
 
     } 
 
    ] 
 
    } 
 
] 
 

 
var output = _.filter(listOfPlays, function(item) { 
 
    return _.some(item.student, { 
 
    name: "Echo" 
 
    }); 
 
}); 
 
console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

関連する問題