当给函数传两个参数,第一个查找项,第二个查找开始位置。函数没有返回值。请教!

当给函数传两个参数,第一个查找项,第二个查找开始位置。函数没有返回值。请教!

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title> 封装indexOf方法</title>
</head>
<body>
<script>
    var n=[1,2,3,4,5,6,7,8,9];
    
   function arrayIndexOf(arr,nbr){
       
       var i;
       if(nbr!=null){
           i=nbr;
       }else{
           i=0;
       }
       
       for(i<n.length;i++){
           if(arr===n[i]){
               return i;
           }
       }
       return -1;
   }
   var a=arrayIndexOf(1,2);
   document.write(a);
</script>
</body>
</html>

请问,这是哪里出错了呢?

正在回答

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

2回答
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>ArrayIndexOf</title>
</head>

<body>
    <script type="text/javascript">
    // searchValue :查找的值
    // startIndex :查找的起始位置,没做过多判断,只能传入>=0的整数,也可不传
    // arr :数组
    function arrayIndexOf(arr, searchValue, startIndex = 0) {
        if (startIndex > arr.length-1) {
            return -1;
        } // 这个if语句好像是多余的,不写也没影响

        var i = startIndex;

        for (; i < arr.length; i++) {
            if (arr[i] === searchValue) {
                return i;
            }
        }

        return -1;
    }

    // 测试
    var n = [9, 1, 2, 3, 4, 5, 2, 6, 1, 7, 8, 9];

    document.write(arrayIndexOf(n, 9, 15) + '<br>');
    document.write(arrayIndexOf(n, 2, 4) + '<br>');
    document.write(arrayIndexOf(n, 2) + '<br>');
    document.write(arrayIndexOf(n, 9) + '<br>');
    document.write(arrayIndexOf(n, 9, 5) + '<br>');
    document.write(arrayIndexOf(n, 10, 5) + '<br>');
    </script>
</body>

</html>

按你这个,我也考虑到传一个查询起始位置,写了一个

  • 嗯,像你说的第一个查找项,第二个查找开始位置。不像我这样设一个数组参数,数组作为全局变量用,也可以。
    2017-05-23 14:43:11
  • 铅笔画2016 提问者 #2
    哈哈,明白了,我这个for条件少了一个;号。谢谢~~~
    2017-05-23 14:49:24
慕尼黑6819948 2017-05-23 13:10:40

你是做的提问这个位置的编程练习吗?

如果是,可能你没有理解题目意思,题目是要求你写一个函数,传入的两个参数是:1、一个数组;2、要查找的一个值。

返回的值应该是查找的那个值在数组中的位置,如果没找到就按通常的做法返回-1。

var a=arrayIndexOf(1,2);

从你这个函数调用就看出有问题了。

当给函数传两个参数,第一个查找项,第二个查找开始位置。

标题的描述也跟这个编程练习的题意对不上。

  • 提问者 铅笔画2016 #1
    哦,哈哈,可能我理解错了。不过先不管传入数组,就我现在做的这个函数,传入的第一个值是查找项,第二个值是查找开始的位置。运行是哪里出错了呢?
    2017-05-23 13:17:59
  • 慕尼黑6819948 回复 提问者 铅笔画2016 #2
    for(i<n.length;i++){ 这个for循环的写法就不对呀!虽然你在前面声明了 i ,但也没有初始化,而且就算初始化了,for( ; ; ){} 这个语句中的两个分号还是要写的
    2017-05-23 13:21:47
  • 第二个参数如果是查找开始的位置的话,在for循环中 return i; 这个 返回值 i 表示什么呢?
    2017-05-23 13:31:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

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

在线咨询

领取优惠

免费试听

领取大纲

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