NodeJS 中的加密货币市场更新功能未正确显示“5 个最大的输家”

问题描述 投票:0回答:1

我正在使用 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.");
      }
    });
node.js arrays cryptocurrency cryptoapi
1个回答
0
投票

解决方案 - 我只是将每个硬币添加到数组中,然后按降序排序并从中弹出 5 个。这种方式可能效率较低,但现在可以了,感谢@derpirscher 的帮助

© www.soinside.com 2019 - 2024. All rights reserved.