Самый старший user
Есть массив users. как найти самых старших user? Их может быть несколько с одинаковым возрастом. на примере
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' },
]
Ответы (3 шт):
Автор решения: fortavey
→ Ссылка
const newData = data.sort( (a,b) => b.age - a.age ).filter(el => el.age === data[0].age);
console.log(newData);
Автор решения: renich
→ Ссылка
Я бы так сделал.
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 max = Math.max(...data.map(item => item.age)) || null;
let res = data.filter(item => max && item.age == max);
console.log(res);
Автор решения: Grundy
→ Ссылка
- Нужно пройтись по всему массиву
- если текущий элемент больше сохраненных
- сбросить сохраненные и записать новый максимальный
- если равен сохраненному - добавить в массив
- если меньше - перейти к следующему
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'
},
];
console.log(data.reduce((acc, cur) => {
if (acc[0] == undefined || cur > acc[0].age) return [cur];
if (cur.age == acc[0].age) acc.push(cur);
return acc;
}, []));