Вот пример для фильтрации вашего набора по first_name
:
const people = [ { first_name: 'dk', last_name: 'k', email: 'k@l.nl', message: 'Email Sent', name: 'test camp' }, { first_name: 'asdfk', last_name: 'lksdfl', email: 'kk@l.nl', message: 'Email Sent', name: 'test camp' }, { first_name: 'asdfkl', last_name: 'lksdf', email: 'salkdf@live.nl', message: 'Email Sent', name: 'test camp' }, { first_name: 'asdklfjlk', last_name: 'laskdfjlksdf', email: 'ksdfsdaf@l.nl', message: 'Email Sent', name: 'test camp' }, { first_name: 'asdfkl', last_name: 'lksdjfkl', email: 'kk@sds.nl', message: 'Email Sent', name: 'test camp' }, { first_name: 'asdfkl', last_name: 'lksdjfkl', email: 'kk@sds.nl', message: 'Clicked Link', name: 'test camp' } ];
let getMessagesByFirstName = (name, data) => {
let result = data.filter(x => x.first_name.includes(name)) || []
if(result.length) {
result = Array.from(result.reduce((r,{message}) => r.add(message), new Set()))
}
return result
}
console.log(getMessagesByFirstName('asdfkl', people))
и получить все сообщения в виде массива.
Идея состоит в том, чтобы сначала отфильтровать через Array.filter , а затем уменьшитьвозвращаемые данные устанавливаются только для сообщений через Array.reduce .Использование Set только для того, чтобы мы получали уникальные значения и не имели дубликатов в конечном массиве.