嵌套数组中使用indexOf查找元素返回错误结果的问题
问题排查与解决
问题根源
你写的两个函数里,数组v的元素都是子数组(比如[2.0]、["One"]),但你用indexOf查找的是单个值(2.0、"One")。indexOf采用严格相等(===)判断匹配,子数组和单个值类型完全不同,自然找不到匹配项,所以会执行else分支。
解决方法
要检查子数组中是否包含目标值,可以用数组的some()方法,它会遍历数组,只要有一个元素满足条件就返回true。
修改后的第一个函数
function search (){ const v = [[2.0], [3.0], [4.0], [5.0]] if(v.some(item => item[0] === 2.0)){ Logger.log ('if') }else{ Logger.log('else') } }
修改后的第二个函数
function search (){ const v = [["One"], ["two"], ["three"], ["four"]] if(v.some(item => item[0] === "One")){ Logger.log ('if') }else{ Logger.log('else') } }
补充说明
如果子数组可能包含多个元素,而你想检查目标值是否存在于任何子数组的任意位置,可以把判断条件改成item.includes(目标值):
// 子数组含多个元素时的通用写法 if(v.some(item => item.includes("One"))){ // 执行逻辑 }
内容的提问来源于stack exchange,提问作者A good person
相关产品推荐
相关产品推荐

