You need to enable JavaScript to run this app. 如何重组嵌套数组对象为Material UI DataGrid可适配的对象数组?
优惠活动
大模型
产品
解决方案
定价
更多

如何重组嵌套数组对象为Material UI DataGrid可适配的对象数组?

实现思路

  • 第一步:匹配到与mainData对应的table配置项,拿到要生成的行标识列表
  • 第二步:遍历行标识列表,逐行构造符合要求的对象,自动生成自增id
  • 第三步:每个行对象内遍历所有mainData条目,注入对应属性值,适配动态长度的行标识列表

实现代码

function transformData(mainData, tableData) {
  // 1. 获取mainData对应的tableId,默认取第一个元素的tableId(同组mainData属于同一张表)
  const targetTableId = mainData[0]?.table_id;
  if (!targetTableId) return [];

  // 2. 匹配对应的table配置,拿到行标识数组
  const matchedTable = tableData.find(item => item.id === targetTableId);
  if (!matchedTable || !Array.isArray(matchedTable.data)) return [];
  const rowIdentifiers = matchedTable.data;

  // 3. 遍历行标识构造输出数组
  return rowIdentifiers.map((identifier, index) => {
    const row = {
      id: index + 1,
      rowIdentifier: identifier
    };
    // 注入所有mainData对应的属性
    mainData.forEach(col => {
      const value = col.data[identifier];
      // 可选:将字符串布尔值转小写,匹配示例输出格式
      row[col.id] = typeof value === 'string' && ['True', 'False'].includes(value) 
        ? value.toLowerCase() 
        : value;
    });
    return row;
  });
}

// 调用示例
const newArray = transformData(mainData, tableData);

适配说明

  • 如果存在多组不同table_id的mainData需要处理,可先对mainData按table_id分组,再分别调用上述函数合并结果即可
  • 自动适配tableData.data数组的长度变化,新增/删除行标识无需修改逻辑
  • 自动兼容mainData元素的增减,新增列数据会自动注入到所有行对象中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:39:04