Javascript 查找JSON不一致的特定键的最新索引?

Javascript 查找JSON不一致的特定键的最新索引?,javascript,json,Javascript,Json,假设我有一些JSON,如下所示: [ { “日期”:“2020-12-25”, “总病例数”:469482.0, “新案例”:2260.0, “新案例平滑”:2115.571, “死亡总数”:9816.0, “新死亡人数”:63.0, “新死亡平滑”:80.857, “每百万总病例数”:2125.388, “每百万新病例数”:10.231, “新案例/百万平滑案例”:9.577, “每百万总死亡人数”:44.438, “每百万新死亡人数”:0.285, “每百万新死亡人数”0.366, “新_测

假设我有一些JSON,如下所示:

[
{
“日期”:“2020-12-25”,
“总病例数”:469482.0,
“新案例”:2260.0,
“新案例平滑”:2115.571,
“死亡总数”:9816.0,
“新死亡人数”:63.0,
“新死亡平滑”:80.857,
“每百万总病例数”:2125.388,
“每百万新病例数”:10.231,
“新案例/百万平滑案例”:9.577,
“每百万总死亡人数”:44.438,
“每百万新死亡人数”:0.285,
“每百万新死亡人数”0.366,
“新_测试”:54649.0,
“总体测试”:6482889.0,
“每千人测试总数”:29.349,
“新千分之测试”:0.247,
“新测试平滑”:38118.0,
“每千次新测试平滑”:0.173,
“正利率”:0.056,
“每个案例的测试”:18.0,
“测试单元”:“执行的测试”
},
{
“日期”:“2020-12-26”,
“总病例数”:471335.0,
“新案例”:1853.0,
“新案件处理顺利”:2006.714,
“死亡总数”:9874.0,
“新死亡”:58.0,
“新死亡抚平”:77.714,
“每百万总病例数”:2133.777,
“每百万新病例数”:8.389,
“每百万新案例数”为9.085,
“每百万总死亡人数”:44.701,
“每百万新死亡人数”:0.263,
“每百万新死亡人数”0.352,
“新_测试”:40953.0,
“总体测试”:6523842.0,
“每千人测试总数”:29.534,
“千分之新测试”:0.185,
“新测试平滑”:37101.0,
“新测试平滑每千次”:0.168,
“正利率”:0.054,
“每个案例的测试”:18.5,
“测试单元”:“执行的测试”
},
{
“日期”:“2020-12-27”,
“总病例数”:473309.0,
“新案例”:1974.0,
“新案例平滑”:2048.714,
“死亡总数”:9929.0,
“新死亡人数”:55.0,
“新死亡抚平”:76.714,
“每百万总病例数”:2142.714,
“每百万新病例数”:8.936,
“新案例/百万平滑案例”:9.275,
“每百万总死亡人数”:44.95,
“每百万新死亡人数”:0.249,
“每百万新死亡人数”为0.347,
“新_测试”:33270.0,
“总体测试”:6557112.0,
“每千人测试总数”:29.685,
“千分之新测试”:0.151,
“新测试平滑”:36539.0,
“每千次新测试平滑”:0.165,
“正利率”:0.056,
“每个案例的测试”:17.8,
“测试单元”:“执行的测试”
},
{
“日期”:“2020-12-28”,
“新_测试”:32205.0,
“总体测试”:6589317.0,
“每千人测试总数”:29.83,
“千分之新测试”:0.146,
“新测试平滑”:36172.0,
“每千次新测试平滑”:0.164,
“测试单元”:“执行的测试”
}
]
在JSON中的这个记录数组中,我希望获得
“total_cases”
的最新实例。下面是我为满足这一点而编写的JavaScript:

const total_cases = (data[data.length - 1].total_cases);
显然,这不起作用,因为数组中的最后一条记录不包含
“total_cases”
键的实例。我使用HTTP GET从源代码获取数据,并且它每天都会更新,因此有时最新的记录包含我要查找的密钥,但有时会出现
类型错误


我的问题是,当JSON出现类似这样的不一致时,是否有任何方法可以找到最新记录的索引,该索引具有我正在寻找的特定键。另一种选择是见鬼去吧,然后寻找另一个来源。我正在考虑这个选择,因为这是一个太麻烦的工作,但我仍然好奇,可以做什么。希望这是有意义的。

您可以反转数组,然后使用
数组。find
方法

const total\u案例=数据
.slice()//由于reverse()会就地更改数组,因此需要原始数组的副本
.reverse()
.find(记录=>record.total_案例!==未定义)
.个案总数;

一种可能的方法是反转数组,然后使用array.prototype.find()搜索包含所有案例的最新记录

data.reverse().find(r => r.total_cases);

您可以这样做,我发现这对您和阅读代码的下一个开发人员来说都很容易理解

数据
.sort((i1,i2)=>i1.date>i2.date?-1:1)
.filter(item=>Boolean(item.total_案例))
[0]。共有个案例

请检查以下问题:你会发现很多不同的方法。你能复制下面的答案吗?@zixuan不,我没有。谢谢,效果很好:)