朋友,我对你的功能做了一些重大更改,现在它运行得很好。
const fetchData = async ( url ) => await (await fetch(url)).json();
const getPlayerData = async () =>
{
const players = Object.values
(
await fetchData("https://api.sleeper.app/v1/players/nfl")
);
const rankedPlayers = players
.filter
(
player => ( player.active && (player.search_rank != null) )
)
.sort
(
( a, b ) => a.search_rank - b.search_rank
);
return rankedPlayers;
}
console.clear();
console.log('Fetching data...');
getPlayerData().then
(
rankedPlayers => console.log
({
'Number of ranked players': rankedPlayers.length,
'First in the list':
{
'Parsed full name': rankedPlayers.at(0).first_name + ' ' + rankedPlayers.at(0).last_name,
'Search rank': rankedPlayers.at(0).search_rank,
},
'Second in the list':
{
'Parsed full name': rankedPlayers.at(1).first_name + ' ' + rankedPlayers.at(1).last_name,
'Search rank': rankedPlayers.at(1).search_rank,
},
'Third in the list':
{
'Parsed full name': rankedPlayers.at(2).first_name + ' ' + rankedPlayers.at(2).last_name,
'Search rank': rankedPlayers.at(2).search_rank,
},
})
);
.as-console-wrapper { min-height: 100%; }
附言
我注意到数据包含非唯一性
search_rank
价值观。所以,也许最好改变一下
.sort()
回调函数,以满足所需排序的所有条件。。。比如,如果有两个
search_rank
如果值相同,那么应该先对哪个值进行排序?在当前示例中,它们将保持不变(因此,原始数据中排序的第一个将排在第一位)。
顺便说一句,有可能使其成为单行线:
const getPlayerData = async () => Object.values(await (await fetch("https://api.sleeper.app/v1/players/nfl")).json()).filter(player => ( player.active && (player.search_rank != null) )).sort(( a, b ) => a.search_rank - b.search_rank);
console.clear();
console.log('Fetching data...');
getPlayerData().then
(
rankedPlayers => console.log
({
'Ranked Players': rankedPlayers.length,
'First Player': rankedPlayers.at(0),
})
);