ArkTs中forEach与for循环满足条件返回差异
在ArkTs中,forEach与for循环都可以对列表进行遍历。现在我的需求是遍历列表找到符合项时立即返回该项索引,用forEach循环示例代码如下:
getIndex(someValue: string){ this.someList.forEach((e: SomeModel, i: number)=>{ if(someValue === e.some_attr){ return i } }) return -1 }
上述forEach代码看上去逻辑没有问题,遍历someList如果找到符合判断条件的项,则返回其对应的索引,如果全部不符合则最终返回-1;但事实却并非如此,通过打断点调试发现,第一次判断条件不成立时直接跳出了循环直接返回了-1。
下面用更常见的for循环来实现这一逻辑,代码如下:
getIndex(someValue: string){ for(let i = 0; i < this.someList.length; i++){ const e = this.someList[i] if( someValue === e.some_attr){ return i } } return -1 }
for循环运行结果符合预期。