我正在使用 CoinCap API https://docs.coincap.io/ 获取前 100 种加密货币的当前市场价格,然后显示跌幅最大的 5 种货币(又称最大输家)。我正在制作一个包含 5 个硬币的数组,迭代 api 调用返回的每个硬币,并将该硬币与数组中当前的 5 个硬币进行比较。
如果该币在过去24小时内下跌幅度大于数组中当前币的跌幅,则将其替换。
我原本期待 5 个最大的输家,但我得到了 5 个我知道不是“最大”输家的输家(又名。还有其他硬币下跌更多)
这是我的一些代码,问题应该是一个简单的逻辑问题,我的大脑太疲惫而无法注意到,但如果我可以提供更多信息,请告诉我!
res.on("end", function ()
{
var body = Buffer.concat(chunks);
var data = JSON.parse(body.toString());
if (data && data.data)
{
var assets = data.data;
var losers = [];
for (var i = 0; i < assets.length; i++)
{
var asset = assets[i];
if (losers.length < 5)
{
losers.push(asset);
}
else
{
for (var j = 0; j < 5; j++)
{
if (asset.changePercent24Hr < losers[j].changePercent24Hr) {
losers[j] = asset;
break;
}
}
}
}
console.log("Top Losers:\n")
for (var i = 0; i < losers.length; i++) {
console.log( losers[i].name + " Price: " + formatter.format(losers[i].priceUsd) + " 24h: " + Number.parseFloat(losers[i].changePercent24Hr).toFixed(2) + "%");
}
}
else
{
console.log("No data found.");
}
});
解决方案 - 我只是将每个硬币添加到数组中,然后按降序排序并从中弹出 5 个。这种方式可能效率较低,但现在可以了,感谢@derpirscher 的帮助