如何从动态更新的对象数组中提取最后三个元素的对象字面量
实现方法
直接调用JavaScript数组的原生slice()方法就能实现需求,该方法不会修改原数组,适配你持续从JSON更新原数组的使用场景。slice()传入负数参数时会从数组末尾反向计数,slice(-3)即可直接提取数组的最后3个元素。
示例代码
// 你从JSON文件读取后得到的数据源示例 const jsonData = { "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" }, ] } // 提取最后3个元素(最近三天数据) const lastThreeDays = jsonData.actuals.slice(-3) console.log(lastThreeDays)
输出结果
执行上述代码后,lastThreeDays的取值为:
[ { 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' } ]
边界情况说明
- 如果原数组长度小于3,
slice(-3)会直接返回整个数组,不会抛出异常 - 如果你需要单独提取每个对象的指定字段,可以配合
map()方法处理:
// 示例:只提取日期和新增病例字段 const filteredData = lastThreeDays.map(item => ({ date: item.date, newCases: item.newCases }))
内容的提问来源于stack exchange,提问作者dannym
相关产品推荐
相关产品推荐

