

新闻资讯
技术学院本文介绍如何将嵌套对象数组转换为标准化键值对数组的完整教程。本文介绍如何将包含日期字符串为键、数值为值的对象数组,高效转换为每个元素都具有统一 `date` 和 `count
` 字段的对象数组,并支持保留嵌套结构或展平为一维数组。
在实际数据处理中,我们常遇到形如 [{ '2025-06-02': 2, '2025-06-21': 6 }, { '2025-06-29': 2, '2025-06-23': 1 }] 的数据结构——即数组中每个元素都是一个以日期为键、计数为值的扁平对象。但前端可视化(如图表库)或后端 API 通常要求结构化、字段统一的数据格式,例如 [{ date: '2025-06-02', count: '2' }, ...]。
此时,可借助 Object.entries() + map() 组合实现精准转换:
const arrayWithDates = [
{ '2025-06-02': 2, '2025-06-21': 6 },
{ '2025-06-29': 2, '2025-06-23': 1 }
];
const arrayTransformed = arrayWithDates.map(record =>
Object.entries(record).map(([date, count]) => ({
count: String(count), // 强制转为字符串,匹配目标格式
date
}))
);
console.log(arrayTransformed);
// 输出:[[{count:"2",date:"2025-06-02"},{count:"6",date:"2025-06-21"}], ...]若需所有日期-计数对合并为单层数组(如绘制时间序列折线图),追加 .flat() 即可:
const flatTransformed = arrayWithDates
.map(record =>
Object.entries(record).map(([date, count]) => ({
count: String(count),
date
}))
)
.flat();
console.log(flatTransformed);
// 输出:[{count:"2",date:"2025-06-02"}, {count:"6",date:"2025-06-21"}, ...]掌握此模式后,你可轻松适配类似需求:如将 { apple: 5, banana: 3 } → [{ name: 'apple', value: 5 }, ...],只需调整解构变量名与返回字段即可。