You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS如何将日期键对象组成的数组转换为以日期为键的单个对象

数组转日期键对象的最优实现方案

原代码直接调用Object.fromEntries(arr)无法得到预期结果,原因是Object.fromEntries要求入参数组的每个元素为[键, 值]格式的二元数组,而当前输入数组的每个元素是仅包含单个日期键的独立对象。

推荐实现

方案1:reduce 单次遍历实现(优先推荐)

仅需一次数组遍历即可完成转换,性能最优,兼容性覆盖ES2015+所有运行环境:

const arr = [ {"2021-08-26": { selected: true }}, {"2021-08-27": { selected: true }}, {"2021-08-28": { selected: true }} ];

const expected = arr.reduce((acc, cur) => Object.assign(acc, cur), {});

console.log(expected);

实现逻辑:

  • 初始化累加器为空对象{}
  • 遍历数组时把当前的单个键对象直接合并到累加器中
  • 遍历结束后返回的累加器就是预期结构

方案2:基于Object.fromEntries实现

如果偏好使用Object.fromEntries,可以先做一层格式转换,该方案需要两次数组遍历,兼容性要求ES2017+:

const expected = Object.fromEntries(
  arr.map(item => Object.entries(item)[0])
);

实现逻辑:

  • 先通过map遍历把每个单个键对象转为[日期字符串, {selected: true}]格式的二元数组
  • 再传入Object.fromEntries生成目标对象

内容的提问来源于stack exchange,提问作者lecham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:15:03