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

如何用reduce重构Google Sheets批量正则替换函数以处理整数组

重构批量正则替换函数以支持二维数组处理

原函数仅支持单列数据的批量正则替换,现需重构为可遍历处理整个二维数组的版本,同时保留原有的规则集中管理、空值跳过优化特性。

原单列处理函数

function processColumn(column)
{
  // Add more as needed:
  // [Regex, Replacement]
  let replaceTable = 
  [
    [/\bN\./g, 'North'],
    [/\bS\./g, 'South'],
    [/\bSt\./g, 'Street']
  ];

  // A column is an array of rows
  // A row is an array of values.
  return column.map(row => 
    // This is an optimization to skip over blank values
    row[0] 
      ? replaceTable.reduce(
        // Replace one value at a time, in order
        (curString, tableEntry) => curString.replaceAll(tableEntry[0], tableEntry[1]),
        row[0]
      )
      : ''
  );
}

重构后的二维数组处理函数

function processArray(array)
{
  // 集中管理替换规则,新增/修改只需在此处操作
  const replaceTable = 
  [
    [/\bN\./g, 'North'],
    [/\bS\./g, 'South'],
    [/\bSt\./g, 'Street']
  ];

  // 遍历外层数组(行),再遍历内层数组(列单元格)
  return array.map(row => 
    row.map(cell => 
      // 空值直接返回,避免不必要的处理
      cell 
        ? replaceTable.reduce(
            (current, [regex, replacement]) => current.replaceAll(regex, replacement),
            cell
          )
        : ''
    )
  );
}

改动说明

  1. 函数命名:从processColumn改为processArray,更贴合功能定位
  2. 多层遍历:使用嵌套map,先遍历每一行(外层map),再遍历行内每个单元格(内层map)
  3. 规则复用:保留原有的replaceTable集中管理模式,新增替换规则只需在数组中添加项,无需修改遍历逻辑
  4. 空值优化:延续原函数的空值跳过处理,避免对空白单元格执行替换操作
  5. 参数解构:在reduce回调中使用数组解构[regex, replacement],让代码更易读

使用示例

和你提到的链式replaceAll实现相比,重构后的函数更易于维护:

// 获取表格数据
const values = sheet.getDataRange().getDisplayValues();
// 处理整个二维数组
const processedValues = processArray(values);
// 将处理后的数据写回表格(可选)
sheet.getDataRange().setValues(processedValues);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:20:29