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

如何获取同时匹配两个字符串的单元格索引?代码报错求助

查找同时包含姓和名的单元格索引

问题背景

需要找到数组中同时包含指定姓氏和名字的第一个单元格索引,姓名格式可能为Jobs, Steve、Jobs II, Steve等。尝试两段代码后均报错:TypeError: Cannot read properties of undefined (reading 'indexOf')。

尝试的代码及错误

第一次尝试代码:

var firstName = 'Steve';
var lastName = 'Jobs';
var columnOfNamesArr = ['Participants','Wozniak, Steve','Gates, Bill','Cook, Tim','Jobs, Mark','Jobs, Steve Apple','Musk, Elon'];

var lastNameIndex = columnOfNamesArr.findIndex(s => s.indexOf(lastName) >= 0);
var nameIndex = columnOfNamesArr[lastNameIndex].findIndex(s => s.indexOf(firstName) >= 0);

第二次尝试代码:

var nameIndex = columnOfNamesArr.findIndex(s => s.includes(lastName) && s.includes(firstName));

数组生成方式:

columnArr = namesSht.getRange('A1:A'+ LastRow).getValues();
var columnOfNamesArr = columnArr.map(r => r[0]);

错误原因

  1. 第一段代码核心错误:columnOfNamesArr[lastNameIndex]是字符串类型,字符串没有findIndex方法,直接调用会触发类型错误;且分步查找的逻辑本身不合理,应该在单个元素内同时判断两个匹配条件。
  2. 两段代码共同问题:从表格取数据时,若A列存在空单元格,map(r => r[0])会生成undefined元素。当findIndex遍历到undefined时,调用indexOf或includes这类字符串方法,就会抛出Cannot read properties of undefined错误。

解决方案

1. 处理空值+一次完成匹配

先判断元素是否为有效字符串,再同时检查姓和名是否存在:

var firstName = 'Steve';
var lastName = 'Jobs';

var nameIndex = columnOfNamesArr.findIndex(s => 
  typeof s === 'string' && s.includes(lastName) && s.includes(firstName)
);
  • typeof s === 'string':提前排除数组中的undefined或非字符串类型,避免调用字符串方法时报错。
  • s.includes(lastName) && s.includes(firstName):单次遍历完成双条件判断,直接返回第一个匹配项的索引。

2. 优化数组生成(可选)

如果表格存在大量空单元格,可在生成数组时直接过滤无效值:

columnArr = namesSht.getRange('A1:A'+ LastRow).getValues();
var columnOfNamesArr = columnArr.map(r => r[0]).filter(s => typeof s === 'string' && s.trim() !== '');

后续查找时无需重复判断空值,简化逻辑。

3. 精准匹配姓名格式(可选)

如果需要严格匹配「姓氏+后缀(可选)+逗号+名字」的格式,可使用正则表达式:

var nameRegex = new RegExp(`^${lastName}(?:\\s+[IVX]+)?,\\s+${firstName}`);
var nameIndex = columnOfNamesArr.findIndex(s => 
  typeof s === 'string' && nameRegex.test(s)
);

该正则可匹配Jobs, Steve、Jobs II, Steve这类格式,避免误匹配Jobs, Steve Apple这类额外带后缀的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:50:01