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

如何将数组对象中的值转换为键实现数据重组?

数组对象结构转换方案

针对你需要将数组中对象的treatment值转为键、合并同date项的需求,直接通过分组映射的方式最简洁高效,不需要额外的删除再添加操作,具体实现如下:

实现代码

const data = [
  { "date": "12/22", "treatment": "nausea", "count": 2 },
  { "date": "12/23", "treatment": "cold", "count": 3 },
  { "date": "12/22", "treatment": "cold", "count": 2 }
];

// 用临时对象按date分组
const dateGroups = {};

data.forEach(item => {
  const { date, treatment, count } = item;
  // 初始化该日期的分组对象
  if (!dateGroups[date]) {
    dateGroups[date] = { date };
  }
  // 将treatment转为键,count作为对应值
  dateGroups[date][treatment] = count;
});

// 把分组对象转为目标数组
const newData = Object.values(dateGroups);
console.log(newData);

核心思路

  1. 用临时对象dateGroups,以date的值作为键,存储每个日期对应的合并后对象
  2. 遍历原始数组时,判断当前date是否已存在于临时对象中:
    • 不存在则创建新对象,仅包含date属性
    • 存在则直接给该对象添加[treatment]: count的键值对
  3. 最后通过Object.values()将临时对象的所有值提取为数组,得到目标结构

这种方式只需要遍历一次原始数组,逻辑清晰且性能高效,避免了多次查找、增删操作带来的复杂度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:20:45