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

如何过滤嵌套数组内指定位置的内容?Google Sheets数组日期过滤

修正嵌套数组过滤逻辑的解决方案

首先,你的原始代码存在几个关键问题,导致无法得到预期结果:

  • 员工ID匹配逻辑有误:原始数组里item[1]是员工编号(比如134、131),但你设置的funcionarioId = "user1"没有对应匹配项;另外预期输出包含两个不同员工编号的条目,推测你可能是想忽略员工ID匹配,或是把funcionarioId的值写错了(比如应该是多个ID或某个特定编号)。
  • 日期匹配逻辑错误:item[3]是带空格的日期字符串(如13/ 11 / 2019),不能直接和month/year做全等比较,得先清洗格式再提取月、年信息。

修正后的代码

假设你需要保留月份(11)、年份(2019)的核心筛选逻辑,同时可以根据需求调整员工ID的匹配规则:

// 补全原始数据的字符串格式(添加引号)
var data = [
  [1, 134, "DIOGO", "03/ 12 / 2019", "ggggg", 2],
  [2, 131, "ALEISIO", "13/ 11 / 2019", "ggg", 33],
  [3, 134, "DIOGO", "25/ 11 / 2019", "gggg", 2],
  [4, 134, "DIOGO", "15/ 12 / 2019", "tttttt", 2]
];
var funcionarioId = "user1"; // 如果不需要匹配员工ID,可注释此行及对应判断
var targetMonth = "11";
var targetYear = "2019";

var dataFiltered = data.filter(function(item) {
  // 1. 清洗日期字符串:移除所有空格
  const cleanDate = item[3].replace(/\s/g, "");
  // 2. 拆分日期为日、月、年三个部分
  const [day, month, year] = cleanDate.split("/");
  // 3. 组合判断条件:日期匹配+可选员工ID匹配
  // 若不需要员工ID匹配,删除`item[1].toString() === funcionarioId &&`即可
  return month === targetMonth && year === targetYear;
});

console.log(dataFiltered);

代码关键步骤解释

  1. 日期格式清洗:用replace(/\s/g, "")去掉日期里的所有空格,把13/ 11 / 2019转换成标准的13/11/2019格式。
  2. 日期拆分提取:通过split("/")把清洗后的日期拆分成日、月、年,方便单独匹配目标月份和年份。
  3. 条件灵活组合:保留核心的年月匹配逻辑,员工ID匹配可根据实际需求开启或关闭,同时注意类型统一(比如把数字类型的员工编号转成字符串再对比)。

最终预期输出

运行修正后的代码,会得到你想要的结果:

[[2, 131, "ALEISIO", "13/ 11 / 2019", "ggg", 33], [3, 134, "DIOGO", "25/ 11 / 2019", "gggg", 2]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:48:34