根据对象属性过滤数组

时间:2016-02-05 18:26:14

标签: javascript

我有一个对象数组,如下所示:

var events = [
  { date: "18-02-2016", name: "event A" },
  { date: "22-02-2016", name: "event B" },
  { date: "19-02-2016", name: "event C" },
  { date: "22-02-2016", name: "event D" }
];

我有约会,例如“22-02-2016”。如何获得一个数组,其中所有对象的日期与给定日期相同?所以在这个例子中我会得到事件B和D.

2 个答案:

答案 0 :(得分:20)

您可以使用数组的filter()函数:

function filter_dates(event) {
    return event.date == "22-02-2016";
}

var filtered = events.filter(filter_dates);

filter_dates()方法可以是独立的,如本示例所示,可以重复使用,也可以作为匿名方法内联 - 完全是您的选择=]

快速/简单的替代方案只是一个简单的循环:

var filtered = [];
for (var i = 0; i < events.length; i++) {
    if (events[i].date == "22-02-2016") {
        filtered.push(events[i]);
    }
}

答案 1 :(得分:8)

用户Array.prototype.filter()如下:

var filteredEvents = events.filter(function(event){
    return event.date == '22-02-2016';
});