2016-02-05 108 views
6

我有对象的数组的数组,东西:筛选基于对象属性

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.

+0

搜索'阵列filter' – Tushar

+0

只是固定它... –

+0

或者这一个:使用Javascript:如何筛选基于属性的对象数组(http://stackoverflow.com/q/2722159/ 218196)...请在提出新问题之前使用搜索。 –

回答

12

你可以使用数组的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]); 
    } 
} 
5

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

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