数组:查询目标元素并打印索引(forEach,some)

452 阅读2分钟

根据所给值查找并打印索引

方法1:arr对象的方法属性forEach (循环无法中断)

 const arr=['内容1','内容2','内容3','内容4']
 
 arr.forEach((item,index)=>{        //(item,index):遍历对象
 
     if(item==='内容3'){
     
            console.log(index)          //打印值为'内容3'的索引
            
         }
 }

方法2:arr对象的方法属性some (推荐)


     const arr=['内容1','内容2','内容3','内容4']
     
     arr.some((item,index)=>{
        if(item==='内容3'){
        
            //在找到对应项之后,可以通过 return true 固定的语法,来终止some循环
            
            console.log(index)
            
            return true  //return true 即结束循环
       
           }
    })

涉及到的知识点

1.Array.forEach

效果:遍历数组

Array.forEach(function(currentValue,index,arr),thisValue)

注意:虽然forEach内部的function是回调函数,但forEach本身可能为同步任务,在内部循环执行完毕后,才会执行下一项同步任务 参考CSDN文章:blog.csdn.net/weixin_3434…

  • ​ 其中:

    • callback:数组中每个元素执行的函数,该函数可接受1-3个参数

    • currentValue:表示数组的当前元素项,必须的参数

    • index:当前元素的下标(索引) 可选

    • arr:当前元素所属的数组 可选

    • thisValue:表示执行回调函数callback()时的this指向。 可选

      forEach()没有返回值

	var arr=[1,3,5,7,9]
	var res=arr.forEach(function(item,index){
        console.log(`数组第${index+1}个元素是${item}`)
    })
    console.log(res)  //undefine,forEach无返回值

forEach的缺陷:

  • forEach与for循环不同,即使找到某个满足条件的元素,也无法提前结束,return也不行

Array.some()

效果:遍历数组&&检测数组是否含有满足指定条件的元素

array.some(function(currentValue,index,arr),thisValue)
  • ​ 其中:

    • callback:数组中每个元素执行的函数,该函数可接受1-3个参数

    • currentValue:表示数组的当前元素项,必须的参数

    • index:当前元素的下标(索引) 可选

    • arr:当前元素所属的数组 可选

    • thisValue:表示执行回调函数callback()时的this指向。 可选

    • 返回值:true/false

  • some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

  • some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

  • 如果没有满足条件的元素,则返回false。

\