2016-02-05 2 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'; 
}); 
Смежные вопросы