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

Apps Script对象遍历问题:筛选最后一个匹配/不匹配值

解决方案

先修正基础语法错误

你给出的对象和数组定义存在语法问题,需要先调整:

  • 数组元素如果是字符串,必须加引号,否则会被当作未定义变量
  • 对象的键值对要用冒号:分隔,而不是等号=

修正后的定义:

var Concat_names = ["a", "b", "c"];
var Concat_rows = {a: "D45", d: "D64", e: "D72", f: "D90"};

实现需求的核心逻辑

你的需求是针对对象的最后一个键,判断数组中的每个元素是否和它匹配,再分别存入对应数组。原代码的嵌套循环会遍历所有键值对,完全不符合需求,需要重新梳理逻辑:

  1. 先提取对象的最后一个键:通过Object.keys()获取所有键的数组,再取最后一个元素
  2. 遍历数组中的每个元素,和这个最后一个键做对比
  3. 根据匹配结果,将最后一个键对应的数值存入目标数组

完整代码:

var Concat_names = ["a", "b", "c"];
var Concat_rows = {a: "D45", d: "D64", e: "D72", f: "D90"};

var Last_CellnoMatch = [];
var Lact_CellisMatch = []; // 注意这里可能是笔误,建议改为Last_CellIsMatch

// 获取对象的最后一个键及对应值
const keys = Object.keys(Concat_rows);
const lastKey = keys[keys.length - 1]; // 也可以用ES2022语法:keys.at(-1)
const lastValue = Concat_rows[lastKey];

// 遍历数组元素做判断
for (const name of Concat_names) {
  if (name !== lastKey) {
    Last_CellnoMatch.push(lastValue);
  } else {
    Lact_CellisMatch.push(lastValue);
  }
}

// 输出结果
Logger.log("Last_CellnoMatch:", Last_CellnoMatch); // 示例中会输出 ["D90", "D90", "D90"]
Logger.log("Lact_CellisMatch:", Lact_CellisMatch); // 示例中为空数组

逻辑说明

  • 示例中对象的最后一个键是"f",对应值是"D90"
  • 数组中的"a"、"b"、"c"都和"f"不匹配,所以全部存入Last_CellnoMatch,最终数组包含三个"D90"
  • 如果数组中存在"f",则该元素对应的"D90"会存入Lact_CellisMatch

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:25:41