javascript - 在页面上获取后如何排序和获取数组中的项目(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}\`\``)
}
解决方案
这是一个非常简单的演示,按确认状态显示前 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>
推荐阅读
- kubernetes - 如何为 EKS 配置 Terraform Kubernetes 提供程序
- powershell - 在 Powershell 中使用 Azure CLI 创建 CosmosDB
- javascript - 使用无头运行的 Puppeteer 捕获崩溃事件
- function - Delphi,传递一组输出参数
- c# - Application Insights 从自定义数据源中清除数据
- ruby-on-rails - 哈希数组每个在特定值时做什么?
- reactjs - React Native - Jest:自更新到 0.56 后已损坏。如何解决?
- android - 倒数计时器在android服务中不起作用
- mysql - sql更新表为null
- c++ - QtWidget 窗口的 QQuickView 子窗口