2016-03-20 15 views
3

私はコースオブジェクトを持っています。クラス配列にnullの場所があるかどうかを調べてフィルタリングします。ただし、クラス配列にnullの位置を持たないオブジェクトが少なくとも1つある場合は、それを返す必要があります。ここで私が働いている例のオブジェクトです:null値を持つオブジェクトをフィルタリングする

courses: [ 
    { 
     title: "Introduction to English 101", 
     classes: [{ 
      location: null, 
      endDate: "2016-03-25T22:00:00.000Z", 
      startDate: "2016-03-23T22:00:00.000Z", 
     }] 
    }, 
    { 
     title: "Introduction to Japanese 101", 
     classes: [{ 
      location: { 
       city: "Paris", 
      }, 
      endDate: "2016-03-25T22:00:00.000Z", 
      startDate: "2016-03-23T22:00:00.000Z", 
     }] 
    }, 
    { 
     title: "Introduction to Spanish 101", 
     classes: [{ 
      location: null, 
      startDate: "2016-02-23T10:11:35.786Z", 
      endDate: "2016-02-23T12:11:35.786Z", 
     }, 
     { 
      location: { 
       city: "Montreal", 
      },    
      startDate: "2016-04-01T10:11:35.786Z", 
      endDate: "2016-04-15T10:11:35.786Z", 
     }], 
    } 
] 

は、ここで私が取得できると期待した結果です:

courses: [ 
    { 
     title: "Introduction to Japanese 101", 
     classes: [{ 
      location: { 
       city: "Paris", 
      }, 
      endDate: "2016-03-25T22:00:00.000Z", 
      startDate: "2016-03-23T22:00:00.000Z", 
     }] 
    }, 
    { 
     title: "Introduction to Spanish 101", 
     classes: [{ 
      location: null, 
      startDate: "2016-02-23T10:11:35.786Z", 
      endDate: "2016-02-23T12:11:35.786Z", 
     }, 
     { 
      location: { 
       city: "Montreal", 
      },    
      startDate: "2016-04-01T10:11:35.786Z", 
      endDate: "2016-04-15T10:11:35.786Z", 
     }], 
    } 
] 

私はちょうど私の心はこの原因をフィルタリングする方法に巻き付け得ることができませんオブジェクトの入れ子構造。 ご協力いただければ幸いです!

答えて

1

どのよう _.filter _.everyの組み合わせの使用に関する:

このことについてどのように
_.filter(obj.courses, function(o) { 
    return !_.every(o.classes,{ location: null }); 
}); 

https://jsfiddle.net/W4QfJ/1534/

+0

だから、シンプルかつエレガント。それは動作します:)ありがとう! – Alistair

+0

@Alistairうれしいこと、うまくいった – Theodore

1

var data = { courses: [/* your sample data above */] }; 

var result = data.courses.filter(function(course){ 
    return course.classes && course.classes.some(function(course){ 
     return course && course.location !== null; 
    }); 
}); 

https://jsfiddle.net/oobxt82n/

+0

これは都市「パリ」を返すだけですが、「モントリオール」という都市でも1クラスのコースオブジェクトを返す必要があります。 – Alistair

+0

@Alistairああ、criteraをちょっと読んだ。簡単に修正されましたが、 – Johan

+0

これは動作します:) – Alistair

関連する問題