这节的练习这样写就可以了把,不是说...就是合并数组吗,为什么还要循环

这节的练习这样写就可以了把,不是说...就是合并数组吗,为什么还要循环

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>


<body>

    <script type="text/javascript">

    // 补充代码

    function Push(...a) {

        

    }

    var arr = [];

    Push(arr, 1, 2, 3)

    </script>

</body>

</html>


正在回答

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

4回答

同学你好,问题解答如下:

1.for...of 中,遍历数组,定义的变量i表示当前遍历的元素,所以直接把变量的元素添加进去。而for循环中,定义的变量i表示索引,所以先要通过数组下标的方式获取数组中的元素。这是基础的语法规定,如果平时复习牢固掌握语法,就没有这些问题了。不过现在看到自己学习方法上的问题,就一定要纠正。不能老师说完,还是不去复习哈~一定要复习,复习,复习(重要的事情说三遍),老师期待你的进步。

2.不知道“而b在这个地方作为”是说的老师的代码,还是说的同学之前写的不对的那份代码。老师再重新给你捋一遍,如下:

在如下代码中,...b意思是把剩余的参数合并到b上,此时b=[1,2,3],所以后续直接遍历这个数组b,拿到它里面对应的元素即可。

http://img1.sycdn.imooc.com//climg/5fc3833909b7648003980199.jpg

而如下代码,没有加三个点(...),所以没有把剩余的参数合并。此时b表示第二个参数,对应的第二个实参值为1,此时b就是单纯的数字1。

http://img1.sycdn.imooc.com//climg/5fc38409091bb62f03790193.jpg


祝学习愉快~


  • Ting111 提问者 #1
    现在明白了 感谢老师的耐心!
    2020-11-29 19:27:29
好帮手慕夭夭 2020-11-29 18:45:02

同学你好,问题解答如下:

1.不对,改成arr.push(b[i]);才对。

2.是要在定义行参时,使用...b合并剩余的参数。

http://img1.sycdn.imooc.com//climg/5fc37625098858fd04080212.jpg

而定义形参,如果没有合并参数,那么根据语法,实参根据形参的位置,一一对应赋值。所以第二个参数b表示的只是第二个实参1,即b=1。

http://img1.sycdn.imooc.com//climg/5fc37662096f3cdd04090198.jpg

而在函数中是使用此参数,b的值为1,...b相当于...1,从逻辑和语法上看,都不对的。建议同学多复习前面的知识,把基础语法多练习几遍,加深印象哦。

http://img1.sycdn.imooc.com//climg/5fc376ce09ede74d04170064.jpg

3.push()是数组中的方法,表示在数组中添加元素。arr.push(i)表示把i添加到数组中。例如第一次循环,i等于0,arr.push(0)表示把0添加到数组,即arr=[0]...依次类推。

4.因为代码中,是把索引i添加到数组中,并不是把参数添加到数组中。

http://img1.sycdn.imooc.com//climg/5fc3784e09cb9ff005060122.jpg

5.arr.push(b[i]) 是获取了数组b索引为i的元素,然后把这个元素添加到arr中。例如第一次循环,i=0 ,arr.push(b[0])代码中,b[0]表示获取数组b的索引为0的元素1 。arr.push(b[0])相当于arr.push(1)就是把1添加到了数组arr中。

6.老师要说几句批评的话了,也是为了同学好,希望能够重视起来。上面讲解的大部分内容,都是第一个阶段小白入门最基础的语法了。但是同学已经学到了最后一个阶段,最基础的语法还没有学会,这说明平时根本不去复习前面的知识点。毕竟快面临找工作了,这样的状态肯定是不行的。

人的大脑是有记忆曲线的,学过的知识,就算你背的滚瓜烂熟了,长时间不用也会忘记。所以复习是学习非常重要的一个环节,建议同学把合理安排时间,在学习后面的知识的同学,多复习前面的基础知识,只有基础掌握的扎实了,你学习后面的内容,才能越来越顺,学习效率才能大大提高。可以把学过的知识做一做笔记,定期复习,多记忆几遍,掌握的就牢固了。加油!

祝学习愉快~


  • 提问者 Ting111 #1

    谢谢老师的批评,我接受了,因为我确实不怎么复习,

    但是1,我说的push(arr[i])不理解是因为我记得的是i代表的只是索引值,后来我看了一下for of方法才想起来你写的i是自定义,而我写的for循环里的 i 才是索引值,确实是因为没复习

    2,就是说‘...b’这个整体代表的是整合数字使零散的数字成为一个数组整体,而b在这个地方作为一个形参就代表了1,2,3这几个零散的数字而不单单只是代表1或者2或者3     是这个意思 吗

    2020-11-29 18:57:57
好帮手慕夭夭 2020-11-29 16:21:09

同学你好,问题解答如下:

1.代码没有实现效果。本题要求,把后面的几项参数,使用push()方法添加到第一项参数(数组)中。但是同学上传的代码中,什么都没有写。

http://img1.sycdn.imooc.com//climg/5fc358ab096f94f305200183.jpg

使用console.log(a)输出一下,是要把后三个参数,添加到第一个参数中。

http://img1.sycdn.imooc.com//climg/5fc3591d09b2432904210183.jpg

根据要求,如下修改:

http://img1.sycdn.imooc.com//climg/5fc359e909cd2f3406100431.jpg

2.箭头函数是不用写function了,但是花括号省略不省略看情况。如果函数中包含多条要执行的语句(2条及以上),还是要写花括号的,语法为()=>{} 。如果只有一条语句,可以省略花括号。


祝学习愉快~

  • 提问者 Ting111 #1

    <!DOCTYPE html>

    <html>

    <head>

        <meta charset="UTF-8">

        <title>Document</title>

    </head>


    <body>

        <script type="text/javascript">

        // 补充代码

        function In(a,...b) {

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

                arr.push(i);

        ​    ​    //   ​arr.push(b[i]);

            }

            return arr;

        }

        var arr = [];

        console.log(In(arr, 1, 2, 3));

        </script>

    </body>

    </html>

    是这样写吗,一开始我写的   for(i=0;i<...b.length;i++){  }然后报错了,这个地方...b不是代表合并的几项吗,单独b也可以代表吗,再就是我这个地方输出的是0,1,2,所以是这个地方不能用这种循环只能用for of循环吗,如果可以用for循环的话要怎写,最后一个我不是很明白的地方就是arr.push(i)是什么意思,

    2020-11-29 17:18:42
提问者 Ting111 2020-11-29 16:19:10

箭头函数就只是把function={} 这几个字符省掉而已是吗。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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