首页 > 解决方案 > 在页面上获取后如何排序和获取数组中的项目(Discord V12)

问题描述

我试图让前 5 个国家拥有更多的 covid 病例,但是当我尝试调整另一个代码来适应这个时,我得到了一个错误。

 fetch("https://pomber.github.io/covid19/timeseries.json")
 .then(response => response.json())
 .then(data => {
var countryArr = Object.keys(data).map(i => i);
                countryArr.forEach((country) => {
                let countryData = data[country];
                countryData = countryData[countryData.length - 1];
                })
                
                let countries = getCovidRank(countryArr, message)
                countries.map((countryData, index) => {
                    countries[index] = `\\ #${index+1} | **Country**: \`\`${countryData[0]}\`\` | **Confirmed**: \`\`${countryData[0].confirmed}\`\``
                    })

//The rest of the code will always work, the problem is up there

}

这是 getCovidRank 文件:

getCovidRank: (countryArr, message) => {
        let countryList = []

        for(var country in countryArr) {
           let countryData = countryArr.confirmed 
           countryList.push([countryArr, (countryData[country])])
        }
        
        countryList.sort((countryData1, countryData2) => {
            return countryData2[1] - countryData1[1] || countryData2[2] - countryData1[2]
        })
        return countryList;
        
    }

我真的希望你能帮助我,我正在努力学习如何做到这一点。下面的代码显示了全局案例(这个代码很好):

            var worldStats = { confirmed: 0, recovered: 0, deaths: 0 };
            var countryArr = Object.keys(data).map(i => i);
            countryArr.forEach((country) => {
            let countryData = data[country];
            // pick last object for today data
                countryData = countryData[countryData.length - 1];
                worldStats.confirmed += countryData.confirmed;
                worldStats.recovered += countryData.recovered;
                worldStats.deaths += countryData.deaths;
            });
            // world data
            var worldChart = [];
            countryArr.forEach((country) => {
                let countryData = data[country];
                countryData.forEach((dailyData, index) => {
                    if (worldChart[index] === undefined) {
                        var worldStats = { date: dailyData.date, confirmed: dailyData.confirmed, recovered: dailyData.recovered, deaths: dailyData.deaths };
                        worldChart.push(worldStats);
                    } else {
                        worldChart[index].confirmed += dailyData.confirmed;
                        worldChart[index].recovered += dailyData.recovered;
                        worldChart[index].deaths += dailyData.deaths;
                    }}
                ); ""
            })
            return message.channel.send(` __Coronavirus:__\n **Active cases**: \`\`${worldStats.confirmed - worldStats.recovered - worldStats.deaths}\`\`\n **Recovered**: \`\`${worldStats.recovered}\`\`\n**Deaths**: \`\`${worldStats.deaths}\`\``)
            }

标签: javascriptnode.jssortingfetchdiscord.js

解决方案


这是一个非常简单的演示,按确认状态显示前 5 个国家/地区。

编辑刚刚添加了一个工作片段

function init() {
  fetch("https://pomber.github.io/covid19/timeseries.json")
    .then(response => response.json())
    .then(data => {
      var countries = [];
      Object.keys(data).forEach(country => {
        var total = data[country].reduce(
          (acc, val) => (acc += val.confirmed),
          0
        );
        countries.push({
          name: country,
          confirmed: total
        });
      });
      countries.sort((a, b) => a.confirmed > b.confirmed ? -1 : 1);
      document.getElementById('div').innerHTML = countries.slice(0, 5).map(c => c.name + ' ' + c.confirmed).join('<br>');
    })
}

init();
<div id="div"></div>


推荐阅读