Javascript lodash过滤掉具有空值的对象

Javascript lodash过滤掉具有空值的对象,javascript,lodash,Javascript,Lodash,我有一个courses对象,我想通过检查它的classes数组是否有空位置来过滤它。但是,如果classes数组至少有一个对象没有空位置,则应返回该对象。下面是我正在处理的一个示例对象: courses: [ { title: "Introduction to English 101", classes: [{ location: null, endDate: "2016-03-25T22:00:00

我有一个courses对象,我想通过检查它的classes数组是否有空位置来过滤它。但是,如果classes数组至少有一个对象没有空位置,则应返回该对象。下面是我正在处理的一个示例对象:

    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",
        }],
    }
]
由于对象的嵌套结构,我无法思考如何过滤这些内容。
任何帮助都将不胜感激

如何使用和类似的组合:

这个怎么样:

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;
   });
});

此选项仅返回city:“Paris”,但它还应返回课程对象,并在city:“Montreal”中包含一个类。@Alistair哦,有点误读了critera。不过很容易修改
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;
   });
});