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

如何将JS对象数组转换为以Instance值为键的指定结构数组?

JavaScript 数据结构转换实现方案

基础实现(匹配你的示例需求)

直接用数组map方法遍历原数据,结合对象解构就能快速完成转换:

// 你的原始数据
const originalData = [
  {
    Instance: 'USM 1',
    performance: '<DanPac_A>.<Daniel.DanOPCHub>.<A Session.Perfomance>',
    agc: '<DanPac_A>.<Daniel.DanOPCHub>.<A Session.AGC>',
    snr: '<DanPac_A>.<Daniel.DanOPCHub>.<A Session.SNR>',
    sos: '<DanPac_A>.<Daniel.DanOPCHub>.<A Session.SNR>',
    flowvel: '<DanPac_A>.<Daniel.DanOPCHub>.<A Session.SNR>',
  },
];

// 转换逻辑
const transformedData = originalData.map(item => {
  // 把Instance字段单独拎出来,剩下的属性打包成rest对象
  const { Instance, ...rest } = item;
  // 返回以Instance为键、值为包含rest的数组的新对象
  return { [Instance]: [rest] };
});

console.log(transformedData);

运行这段代码后,输出结构完全符合你的要求。

进阶:合并相同Instance的多条数据

如果原数组里有多个Instance相同的对象,想把它们的属性都归集到同一个数组里,用reduce方法就能实现:

const originalData = [
  { Instance: 'USM 1', performance: 'val1', agc: 'val2' },
  { Instance: 'USM 1', performance: 'val3', agc: 'val4' },
  { Instance: 'USM 2', performance: 'val5', agc: 'val6' },
];

const transformedData = Object.values(originalData.reduce((acc, item) => {
  const { Instance, ...rest } = item;
  // 没有该Instance的键就新建数组,有就直接push新数据
  acc[Instance] = acc[Instance] || [];
  acc[Instance].push(rest);
  return acc;
}, {}));

console.log(transformedData);

这段代码的输出会把同Instance的数据合并到对应数组中,结构如下:

[
  {
    'USM 1': [
      { performance: 'val1', agc: 'val2' },
      { performance: 'val3', agc: 'val4' }
    ]
  },
  {
    'USM 2': [
      { performance: 'val5', agc: 'val6' }
    ]
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:48:27