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

JavaScript中遍历含数组值的对象并转换为指定格式对象数组

JavaScript 数据转换实现方案

实现逻辑

  • 先定义原始字段到目标字段的映射规则,避免硬编码错误
  • 遍历原始对象的每个字段,将对应数组内的逗号分隔字符串拆分,去除内容首尾空格,数值类型统一转为Number
  • 按索引遍历所有拆分后的数组,将同索引位置的字段值组装为目标对象,最后汇总为符合要求的对象数组

完整代码

// 传入的原始数据
const rawData = {
  t: ["20181019,20181022,20190509"],
  o: ["180.34,180.82,193.31"],
  h: ["180.99,181.40,195.08"],
  l: ["178.57,177.56,191.59"],
  c: ["179.85 ,178.75,194.58"]
};
// 原始字段和目标字段的映射关系
const fieldMap = {
  t: 'time',
  o: 'open',
  h: 'high',
  l: 'low',
  c: 'close'
};

// 第一步:拆分原始字符串为独立元素数组
const processedFields = {};
Object.keys(fieldMap).forEach(rawKey => {
  processedFields[rawKey] = rawData[rawKey][0].split(',').map(item => item.trim());
});

// 第二步:按索引组装目标数组
const result = [];
const dataLength = processedFields.t.length;
for (let i = 0; i < dataLength; i++) {
  const currentItem = {};
  Object.entries(fieldMap).forEach(([rawKey, targetKey]) => {
    const value = processedFields[rawKey][i];
    currentItem[targetKey] = targetKey === 'time' ? value : Number(value);
  });
  result.push(currentItem);
}

console.log(result);

输出结果

运行代码后得到的result完全符合要求的结构:

[
    { time: '20181019', open: 180.34, high: 180.99, low: 178.57, close: 179.85 },
    { time: '20181022', open: 180.82, high: 181.4, low: 177.56, close: 178.75 },
    { time: '20190509', open: 193.31, high: 195.08, low: 191.59, close: 194.58 }
]

兼容说明

如果原始数据中各字段拆分后长度不一致,可自行添加边界判断逻辑处理异常场景;如果原始对象的value数组包含多个字符串元素,修改拆分逻辑先拼接所有字符串再拆分即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:57:02