老师您好,我想将这里的数据改成用户可以输入的形式,但不知道怎么能把arguments用到,所以想问问您。

老师您好,我想将这里的数据改成用户可以输入的形式,但不知道怎么能把arguments用到,所以想问问您。

//本题的答案

function avg(){

            for(var i=0,sum=0;i<arguments.length;i++){

                sum+=arguments[i];

            }

            return sum/arguments.length;

        }

        

        alert(parseInt(avg(12,34,4656,234,34)));

//我自己写的代码

var arr=[];

        function avg(){

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

                sum+=arr[i];

            }

            return sum/arr.length;

        }

        while(input!=-1){

            var input = Number(prompt("请用户输入数字,输入-1结束"));

            arr.push(input);

            console.log(arr);

        }

        arr.pop();

        console.log(arr);

        alert(parseInt(avg(arr)));

问题描述:

首先,就是觉得这个题中的数据是否可以让用户自己输入想要输入的数字和个数,但又用到arguments类数组?其次就是如果可以用到argumengts类数组实现的代码和我这个代码那个更优?

麻烦老师能够给与讲解,万分谢谢!!!


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

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

1回答
好帮手慕然然 2021-06-17 18:30:27

同学你好,建议可以参考以下思路实现:

当调用avg函数时,将用户输入的内容(arr数组)当做参数传入avg函数,即 avg(arr)。

此时在avg函数中可以通过arguments对象获取到传入的参数,如图

http://img1.sycdn.imooc.com//climg/60cb238e095d643815300758.jpg

使用arguments对象获取到传入的参数后,对该参数进行遍历即可,参考代码如下:

http://img1.sycdn.imooc.com//climg/60cb23b40941c12808750831.jpg

关于实现方法:按照同学的实现方法,代码中存在一点小问题,如图

http://img1.sycdn.imooc.com//climg/60cb23d3099760e509080803.jpg

参考代码:

http://img1.sycdn.imooc.com//climg/60cb23f709f67b6508030801.jpg

这两种实现方法都是可以的,只是使用情况不同,如果在传入参数不确定的情况下就要使用argumengts。

祝学习愉快!

  • 提问者 慕运维1161037 #1

    老师,谢谢您!我还有个问题就是arguments中存的是数组的情况下arguments是否是个二维数组呢,如果arguments是二维数组那我可不可以用双层for循环遍历arguments去实现呢?还有就是如果这样的话代码会不会比较冗余呢?望您解答

    2021-06-17 18:37:40
  • 好帮手慕然然 回复 提问者 慕运维1161037 #2

    同学你好,此时arguments类数组对象可以当做二维数组来操作,也可以使用双层for循环来遍历,但arguments是类数组,不是真正的数组。这种情况在编程中遇到比较少,如果遇到的话使用双层for循环也是可以的。祝学习愉快!

    2021-06-17 19:27:24
  • 提问者 慕运维1161037 回复 好帮手慕然然 #3

    好的,非常感谢

    2021-06-17 19:29:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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