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

Google Script中如何按条件使用map方法遍历二维数组执行计算

Google Apps Script 按布尔条件处理数组元素实现方案

你已经实现了两个数组的zip合并,后续直接对合并后的二维数组调用map做分支判断即可,全程使用map实现符合自定义函数的性能规范,无额外遍历开销。

核心逻辑

合并后的二维数组每一项结构为[Arr1对应位置数值, Arr2对应位置布尔标记],遍历时解构取值即可:布尔值为true时执行预设计算,为false时返回0。

基础实现代码

// 表格内调用方式:=CONDITIONAL_CALC(数值数组范围, 布尔数组范围)
function CONDITIONAL_CALC(arr1, arr2) {
  // 原有zip合并方法
  const zip = (a1, a2) => a1.map((val, idx) => [val, a2[idx]]);
  
  // 遍历做条件计算
  return zip(arr1, arr2).map(item => {
    const [numVal, boolFlag] = item;
    // 替换此处为你需要的自定义计算逻辑,示例为数值乘2
    return boolFlag ? numVal * 2 : 0;
  })
}

适配表格选区的优化版本

实际在Google Sheets中选中单元格范围传入公式时,单列/单行范围会被识别为二维数组(例如选中A1:A4实际传入结构为[[1000],[2000],[3000],[4000]]),增加一层拍平处理,同时返回二维单列结构,结果会自动在单列纵向填充,无需手动调整数组维度:

function CONDITIONAL_CALC(arr1, arr2) {
  // 拍平表格传入的二维范围为一维数组
  const flatArr1 = arr1.flat();
  const flatArr2 = arr2.flat();
  const zip = (a1, a2) => a1.map((val, idx) => [val, a2[idx]]);

  // 计算后转为单列二维结构,适配表格自动填充规则
  return zip(flatArr1, flatArr2).map(item => {
    const [numVal, boolFlag] = item;
    return boolFlag ? numVal * 2 : 0;
  }).map(resItem => [resItem]);
}

测试效果

用你提供的示例数组运行:

  • Arr1 = [1000,2000,3000,4000]
  • Arr2 = [True,False,False,True]
  • 返回结果为 [2000, 0, 0, 8000],符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 13:42:30