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

如何使用jq将对象的日期时间键复制到对应内部对象中?

解决方案:将JSON对象的外层时间键移入子对象并转换为数组

针对你的需求,我们可以分两步(或者一步到位)完成操作,下面用JavaScript为例给出具体实现:

步骤1:为每个子对象添加date属性

首先遍历原始对象的键值对,把外层的时间戳键作为date属性添加到对应的子对象中:

const originalData = { 
  "2018-05-15T22:00:00Z": { "foo": "0.0", "bar": "90.0" }, 
  "2018-05-15T22:30:00Z": { "foo": "0.0", "bar": "70.0" } 
};

// 生成包含date字段的新对象
const dataWithDate = Object.fromEntries(
  Object.entries(originalData).map(([date, obj]) => [date, { ...obj, date }])
);

执行后得到你需要的中间结果:

{ 
  "2018-05-15T22:00:00Z": { "date": "2018-05-15T22:00:00Z", "foo": "0.0", "bar": "90.0" }, 
  "2018-05-15T22:30:00Z": { "date": "2018-05-15T22:30:00Z", "foo": "0.0", "bar": "70.0" } 
}

步骤2:转换为数组

如果最终需要的是数组格式,直接提取新对象的所有值即可:

const finalArray = Object.values(dataWithDate);

一步到位的简化写法

其实不需要单独保留中间的对象,我们可以直接把两步合并,一次完成转换:

const finalArray = Object.entries(originalData).map(([date, obj]) => ({ ...obj, date }));

最终得到的数组结果如下:

[
  { "date": "2018-05-15T22:00:00Z", "foo": "0.0", "bar": "90.0" },
  { "date": "2018-05-15T22:30:00Z", "foo": "0.0", "bar": "70.0" }
]

代码说明

  • Object.entries():将原始对象转换为[键, 值]形式的数组,方便我们同时获取时间戳和对应的子对象
  • 扩展运算符...obj:用于复制子对象原有的所有属性,避免直接修改原始数据
  • map():遍历数组并生成新的对象/数组,满足我们的转换需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:07:22