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

如何将指定结构的JavaScript对象转换为表格行格式的数组

实现思路

  • 首先提取输入对象的所有列名(即输入对象的自有属性集合)
  • 统计总数据行数:遍历所有列对应的行索引,取最大索引值加1即为总行数,可适配任意行数的业务场景
  • 逐行构建数据对象:遍历每一行索引,给每一行匹配所有列对应的单元格内容,组装成目标结构的对象

实现代码

function transformColumnToRow(columnData) {
  // 1. 获取所有列名
  const columns = Object.keys(columnData);
  // 2. 计算总行数
  let maxRowIndex = -1;
  columns.forEach(col => {
    const rowIndexes = Object.keys(columnData[col]).map(Number);
    const currentMax = Math.max(...rowIndexes);
    if (currentMax > maxRowIndex) maxRowIndex = currentMax;
  });
  const totalRows = maxRowIndex + 1;
  // 3. 逐行组装数据
  const result = [];
  for (let rowIdx = 0; rowIdx < totalRows; rowIdx++) {
    const rowItem = {};
    columns.forEach(col => {
      // 取当前行对应列的值,无值时默认返回空字符串
      rowItem[col] = columnData[col][rowIdx] ?? '';
    });
    result.push(rowItem);
  }
  return result;
}

// 测试示例
const input = {"SI":{"0":"1","1":""},"Description of Goods":{"0":"LTD","1":"TET"},"HSN/SAC":{"0":"38220090","1":""},"MRP/ Marginal":{"0":"849.00/NO","1":""},"Quantity":{"0":"30 NO 30 NO","1":""},"Rate":{"0":"470.00","1":""},"per":{"0":"NO","1":""},"Amount":{"0":"14,100.00","1":"846.00 "}};
console.log(transformColumnToRow(input));

补充说明

你给出的预期输出中第二行SI字段值为"1"属于笔误,按照输入数据第二行SI值应为空字符串。如果实际需求是SI字段为行号自动从1开始递增,可以在组装行对象时单独处理该字段:

// 替换原有SI赋值逻辑即可
rowItem['SI'] = String(rowIdx + 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:00:02