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

如何遍历数据集对象并修改属性键?数据格式转换技术求助

解决数据格式转换问题

别担心,这个格式转换其实很直接,我们只需要逐层遍历对象,把旧的属性键映射到新的键上就行。我帮你完善了formatData函数,直接就能用:

function formatData(receivedData) {
  // 遍历顶层数组的每个对象
  return receivedData.map(item => {
    return {
      // 把原name替换成id
      id: item.name,
      // 处理series数组,转换成data数组
      data: item.series.map(seriesItem => {
        // 子对象里的name换成x,value换成y
        return {
          x: seriesItem.name,
          y: seriesItem.value
        };
      })
    };
  });
}

// 用你的示例数据测试
const received = [ { "name": "1PM Industries Inc ", "series": [ { "value": 0.0001, "name": "2019-08-30" }, { "value": 0, "name": "2019-08-28" } ] } ];
const formattedResult = formatData(received);
console.log(formattedResult);

运行这段代码后,输出的格式就完全符合你的需求了:

[
  {
    "id": "1PM Industries Inc ",
    "data": [
      { "x": "2019-08-30", "y": 0.0001 },
      { "x": "2019-08-28", "y": 0 }
    ]
  }
]

简单解释一下逻辑:

  • 外层的map用来遍历原数组的每个顶层对象,返回一个新的转换后的对象数组。
  • 对于每个顶层对象,我们直接创建新的id属性,值就是原对象的name。
  • 内层的map用来处理series数组里的每个子项,把每个子项的name改成x,value改成y,组成新的data数组。

如果你的原数据里还有其他需要保留的属性,可以用扩展运算符...来保留,比如:

return {
  ...item, // 保留原对象的其他属性
  id: item.name,
  data: item.series.map(seriesItem => ({
    x: seriesItem.name,
    y: seriesItem.value
  })),
  // 删掉旧的属性键(可选,如果你不想保留的话)
  name: undefined,
  series: undefined
};

这样就灵活多了,不管原数据有没有额外属性,都能完美转换~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:16:43