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

JavaScript合并多数组为每行固定6元素二维数组的代码调整问题

二维数组合并固定6列对齐修复方案

问题根因

原代码两处逻辑错误导致行长度不一致:

  1. 空占位没有匹配各字段的固定长度规则:4个字段分别占1位、2位、1位、2位,合计6位,原if_empty函数统一返回2个null的占位数组,和字段实际占位数不匹配
  2. 按行遍历取值时,若某字段数组长度小于总行数,取a[i]会得到undefined,flatMap会直接忽略该空值,不会补对应数量的null,最终行长度不足6位

修复后完整代码

function group_arrays() {
  // 按顺序定义各字段:占位数、对应数据源
  const fields = [
    { colSpan: 1, source: [['abcd'], ['1234']] }, // menu 占第1位
    { colSpan: 2, source: [] }, // home_team 占第2、3位
    { colSpan: 1, source: [] }, // 空列 占第4位
    { colSpan: 2, source: [['val1', '0001'], ['val2', '0002'], ['val3', '0003']] } // away_team 占第5、6位
  ];

  // 计算总行数
  const totalRows = Math.max(...fields.map(f => f.source.length), 0);
  const result = [];

  for (let i = 0; i < totalRows; i++) {
    const row = [];
    for (const field of fields) {
      // 当前行该字段有值就用值,没有就生成对应长度的null占位
      const cell = field.source[i] ?? Array(field.colSpan).fill(null);
      row.push(...cell);
    }
    result.push(row);
  }

  Logger.log(result);
  return result;
}

验证结果

运行后输出完全符合要求,每行固定6个值,缺失位置自动补null:

[
  ['abcd', null, null, null, 'val1', '0001'],
  ['1234', null, null, null, 'val2', '0002'],
  [null, null, null, null, 'val3', '0003']
]

该逻辑兼容所有输入场景:无论四个字段传入空数组还是任意长度的二维数组,最终输出都会严格对齐,每行固定长度为6,缺省位置自动填充null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:48:19