如何在JavaScript中将对象数组转换为指定结构的新数组?
解决方法
首先假设你的原始数据结构类似这样(如果和实际不符,只需调整字段匹配即可):
const originalData = [ { CountryName: "美国", SourceName: "石油", 2011: 500, 2012: 520, 2013: 510, 2014: 530, 2015: 525, 2016: 540 }, { CountryName: "中国", SourceName: "煤炭", 2011: 800, 2012: 850, 2013: 870, 2014: 860, 2015: 840, 2016: 830 } ];
使用map方法完成转换:
const transformedData = originalData.map(item => { // 解构分离固定字段和年度数据 const { CountryName, SourceName, ...yearlyValues } = item; // 将年度键值对转为包含年份和数值的数组元素 const data = Object.entries(yearlyValues).map(([year, value]) => ({ year: Number(year), value: value })); return { CountryName, SourceName, data }; });
关键步骤说明:
- 解构赋值:快速把
CountryName、SourceName从原对象中分离,剩下的所有年度字段自动归入yearlyValues对象。 - Object.entries():把年度数据的键(年份)和值(能源数据)转换成二维数组,方便后续处理。
- 二次
map:将每个年度键值对转换成结构化的对象,确保年份是数字类型(原数据中年份是字符串键,转成数字更实用)。
若只需数值数组的data:
如果你的data不需要年份,仅需要2011-2016的数值按顺序排列,可以用指定年份数组提取:
const transformedData = originalData.map(item => { const { CountryName, SourceName } = item; const years = [2011, 2012, 2013, 2014, 2015, 2016]; const data = years.map(year => item[year]); return { CountryName, SourceName, data }; });
这样处理后,就能得到符合需求的新对象数组。
内容的提问来源于stack exchange,提问作者Parth Raval
相关产品推荐
相关产品推荐

