首页 > 解决方案 > 如何根据特定对象过滤对象数组?

问题描述

我有这个从 JSON 文件不断更新的对象数组(最后一个索引总是每天更新到一个新的日期)。我的目标是使用这个对象数组的最后三个索引(最后三天)并从每个对象中获取对象字面量。我怎样才能做到这一点?

对象数组

"actuals": [
    {
      "cases": 4,
      "deaths": 1,
      "newCases": 3,
      "newDeaths": 3,
      "date": "2020-01-22"
    },
    {
      "cases": 5,
      "deaths": 2,
      "newCases": 5,
      "newDeaths": 3,
      "date": "2020-01-23"
    },
    {
      "cases": 9,
      "deaths": 5,
      "newCases": 7,
      "newDeaths": 3,
      "date": "2020-01-24"
    },
    {
      "cases": 15,
      "deaths": 7,
      "newCases": 3,
      "newDeaths": 3,
      "date": "2020-01-25"
    },
    {
      "cases": 19,
      "deaths": 3,
      "newCases": 5,
      "newDeaths": 4,
      "date": "2020-01-26"
    },
]

标签: javascriptjsonobjectfiltering

解决方案


只需从长度开始一个指针 - 3 并迭代 3 次并继续添加 actuals[ptr]["newCases"]

const actuals = [{ "cases": 4, "deaths": 1, "newCases": 3, "newDeaths": 3, "date": "2020-01-22" }, { "cases": 5, "deaths": 2, "newCases": 5, "newDeaths": 3, "date": "2020-01-23" }, { "cases": 9, "deaths": 5, "newCases": 7, "newDeaths": 3, "date": "2020-01-24" }, { "cases": 15, "deaths": 7, "newCases": 3, "newDeaths": 3, "date": "2020-01-25" }, { "cases": 19, "deaths": 3, "newCases": 5, "newDeaths": 4, "date": "2020-01-26" }, { "cases": 26, "deaths": 3, "newCases": 6, "newDeaths": 5, "date": "2020-01-27" }, { "cases": 34, "deaths": 5, "newCases": 9, "newDeaths": 3, "date": "2020-01-28" }, { "cases": 56, "deaths": 6, "newCases": 14, "newDeaths": 5, "date": "2020-01-29" },]

let actLength = actuals.length ;
let total = 0;
for ( let i = actLength - 3; i < actLength; i++) {
  total += actuals[i]["newCases"] 
}
console.log(`Average: ${total/3}`)
//return ( total / 3 )


推荐阅读