Итак, у меня есть этот набор пилотов:
var pilots = [
{
id: 10,
name: "Poe Dameron",
years: 14,
},
{
id: 2,
name: "Temmin 'Snap' Wexley",
years: 30,
},
{
id: 41,
name: "Tallissan Lintra",
years: 16,
},
{
id: 99,
name: "Ello Asty",
years: 22,
}
];
И я хочу напечатать самого опытного пилота.С помощью Reduce () я могу распечатать наиболее опытный.Но эта функция уменьшения напечатает последний пилот с большим опытом.В приведенном выше массиве отлично работает уменьшение:
var mostExpPilot = pilots.reduce(function (oldest, pilot) {
return (oldest.years || 0) > pilot.years ? oldest : pilot;
}, {});
console.log(mostExpPilot); // Prints { id: 2, name: 'Temmin \'Snap\' Wexley', years: 30 }
Если у нас есть 2 или более пилота с одинаковым опытом, и я хочу напечатать оба вхождения.Например, у нас есть массив ниже, где есть два пилота с одинаковым опытом работы.Реализованная функция уменьшения печатает только последний пилот.
var pilots = [
{
id: 10,
name: "Poe Dameron",
years: 14,
},
{
id: 2,
name: "Temmin 'Snap' Wexley",
years: 30,
},
{
id: 41,
name: "Tallissan Lintra",
years: 30,
},
{
id: 99,
name: "Ello Asty",
years: 22,
}
];
//find the most experienced pilot
var mostExpPilot = pilots.reduce(function (oldest, pilot) {
return (oldest.years || 0) > pilot.years ? oldest : pilot;
}, {});
console.log(mostExpPilot); // prints { id: 41, name: 'Tallissan Lintra', years: 30 }
Могу ли я сделать это с помощью Redu ()?Если да, не могли бы вы дать мне знать?Если нет, как я могу это сделать?Благодаря. **