代码中findIndex始终返回-1:元素存在却无法获取索引问题
问题原因及解决办法
原因
你的findIndex回调函数存在返回值缺失的问题:
- 当回调函数用大括号
{}包裹代码块时,必须显式用return返回判断结果; - 当前代码里的
a.NAME == result.NAME仅执行了比较操作,没有返回该结果,回调函数默认返回undefined; findIndex会把undefined判定为false,因此无法匹配到目标元素,始终返回-1。
解决办法
方法1:添加显式return
给回调函数的比较语句加上return,明确返回判断结果:
let index = this.List.findIndex((a:any) => { return a.NAME == result.NAME })
方法2:简化箭头函数写法
如果回调只有一行返回逻辑,可以省略大括号和return,箭头函数会自动返回该行的执行结果:
let index = this.List.findIndex((a:any) => a.NAME == result.NAME)
额外建议
为避免隐式类型转换导致的匹配错误,建议使用严格相等运算符===替代==,同时确认NAME的大小写、前后空格等是否完全一致:
let index = this.List.findIndex((a:any) => a.NAME === result.NAME)
内容的提问来源于stack exchange,提问作者Neeti Jain
相关产品推荐
相关产品推荐

