属性为true时的JavaScript过滤器对象

时间:2014-06-02 15:08:43

标签: javascript jquery

我有一系列对象,我试图过滤并仅返回其中包含' IsSubstitute'财产的价值是真的。

    [
       {
         EndTime: "16:00",
         IsSubstitute: false,
         OutletId: 619777,
         StartTime: "05:00",
         VisitDate: "2014-05-30",
         id: "168de242-d031-49f2-96d1-803154d0df1e"
       },
       {
         EndTime: "17:00",
         IsSubstitute: true,
         OutletId: 619755,
         StartTime: "05:00",
         VisitDate: "2014-05-30",
         id: "168de242-d031-49f2-96d1-803154d0dabc"   
       },
       {
         EndTime: "18:00",
         IsSubstitute: true,
         OutletId: 619722,
         StartTime: "05:00",
         VisitDate: "2014-05-30",
         id: "168de242-d031-49f2-96d1-803154d0ddfg"   
       }
       // and so on...
    ]

我试过这个没有运气:

data = $.grep(data, function (e) {
       return e.IsSubstitute = false;
});

请帮忙!

提前致谢

3 个答案:

答案 0 :(得分:1)

您使用=设置值,但不检查是否相等。

使用===,这意味着严格等于:

data = $.grep(data, function (e) {
    // --------------------v
    return e.IsSubstitute === true;

    // or simply return e.IsSubstitute;
});

答案 1 :(得分:0)

您可以尝试原生Array.prototype.filter

arr.filter(function(v){ return v.IsSubstitute == true});

答案 2 :(得分:0)

您应该使用JS数组的内置.filter方法。使用您的示例,您将使用:

data = data.filter( function(item) { return item.IsSubstitute === true })

并非所有浏览器都支持过滤器,但所有现代浏览器都支持过滤器(IE9,FF,Chrome)。