Помогите разобрать решение
Дан список информации о людях.
Необходимо вернуть массив, содержащий самого старшего человека в списке. Если несколько людей имеют одинаковый наибольший возраст, то нужно вернуть массив, содержащий их всех.
Возраст хранится в поле age.
Данные на входе:
const data =[
{ firstName: 'Gabriel', lastName: 'X.', country: 'Monaco', continent: 'Europe', age: 49, language: 'PHP' },
{ firstName: 'Odval', lastName: 'F.', country: 'Mongolia', continent: 'Asia', age: 38, language: 'Python' },
{ firstName: 'Emilija', lastName: 'S.', country: 'Lithuania', continent: 'Europe', age: 19, language: 'Python' },
{ firstName: 'Sou', lastName: 'B.', country: 'Japan', continent: 'Asia', age: 49, language: 'PHP' },
]
const result = getMostSenior(data);
Данные на выходе:
console.log(result);
// [
// { firstName: 'Gabriel', lastName: 'X.', country: 'Monaco', continent: 'Europe', age: 49, language: 'PHP' },
// { firstName: 'Sou', lastName: 'B.', country: 'Japan', continent: 'Asia', age: 49, language: 'PHP' },
// ]
Вот решение:
const getMostSenior = humans => {
const max = Math.max(...humans.map(item => item.age));
let res = humans.filter(item => max && item.age == max);
return res;
};
В первой строчке (где объявляется переменная max) я не могу до конца понять, зачем используется спред? Во второй строке, при объявлении переменной res используется метод filter, в скобках которого я тоже не имею полной картины
Источник: Stack Overflow на русском