HarmonyNote.TOP鸿蒙开发笔记

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循环运行结果符合预期。