gpt4 book ai didi

javascript - 在 Javascript 中使用 reduce() 打印两次或多次出现

转载 作者:行者123 更新时间:2023-11-30 07:19:47 24 4
gpt4 key购买 nike

所以我有这一系列的飞行员:

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() 我可以打印最有经验的一个。但是这个 reduce 函数将打印最后一位经验最多的飞行员。在上面的数组中,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 个或更多具有相同经验的飞行员并且我想打印这两个事件。例如,我们有以下数组,其中有两名具有相同多年经验的飞行员。实现的 reduce 函数只打印最后一个 pilot。

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 }

我可以用 reduce() 来做吗?如果是的话,你能告诉我吗?如果没有,我该怎么做?谢谢。**

最佳答案

你可以,虽然这不是很常见的习语:

const oldestPilots = pilots => pilots.reduce((oldest, pilot) => {
if (!oldest.length || oldest[0].years < pilot.years) return [pilot];
if (oldest[0].years == pilot.years) return [...oldest, pilot];
return oldest;
}, [])

关于javascript - 在 Javascript 中使用 reduce() 打印两次或多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54806038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com