怎么实现返回查找的所有结果?

怎么实现返回查找的所有结果?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title> 封装indexOf方法</title>

</head>

<body>

<script>

  var arr=[0,1,2,2,2,3,4,5]

   //补充代码

   function indexOf(arr,value){

       for(var i=0;i<arr.length;i++){

           if(arr[i]===value){

               return i;

           }

       }

        return -1;

   }

   document.write(indexOf(arr,3));

</script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
妮可妮可妮_ 2018-05-20 12:07:52

同学使用return方法在找到第一个i的时候即停止了循环,要想找出所有的i需要完整遍历数组。可参考如下代码。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title> 封装indexOf方法</title>

</head>

<body>

<script>

var arr=[0,1,2,2,2,3,4,5]

var indexArr = []

//补充代码

function indexOf(arr,value){

for(var i=0;i<arr.length;i++){

if(arr[i]===value){

indexArr.push(i)

}

if(i==arr.length-1){

return indexArr

}

}

return -1;

}

document.write(indexOf(arr,2));

</script>

</body>

</html>


  • 提问者 立志学好Java #1
    为什么不在if(arr[i]===value){ indexArr.push(i) }后直接返回indexArr?我试过不行,不理解为什么要多加个if(i==arr.length-1){ return indexArr },上面循环里不是都限定了吗
    2018-05-20 12:18:09
  • 妮可妮可妮_ 回复 提问者 立志学好Java #2
    因为 在 if(arr[i]===value){ indexArr.push(i) }中满足条件的不止一个,如果在内部循环,并且return的话,遇到第一个满足的条件,循环就终止了,if(i==arr.length-1){ return indexArr }则是用来判断数组是否循环完成,保证所有的i都被添加。
    2018-05-20 12:24:38
  • 提问者 立志学好Java #3
    function indexOf(arr,value){ for(var i=0;i<arr.length;i++){ if(arr[i]===value){ indexArr.push(i); } return indexArr; } return -1; } document.write(indexOf(arr,2)); 我发现 好像我并不清楚函数里的执行顺序啊 比如第一个i=0,不满足 那么就跳过if里的了?直接执行下面的return?
    2018-05-20 12:39:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师