不知道思路对不对,不知道怎么测试

不知道思路对不对,不知道怎么测试

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>数组反转</title>

</head>

<body>

<script>

    function a(){

        var z=new Array();

        var i=0;

        var y=a.length;

        for(i=0;i<y;i++){

            var x=a.pop();

            z.push(x);

            return z;

        }

    }

    document.write(a[1,2,3,4,5]);

</script>

</body>

</html>


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

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

3回答
妮可妮可妮_ 2018-09-19 10:17:56
<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>数组反转</title>

</head>

<body>

<script>

function a() {

var z = new Array();

var i = 0;

var y = arguments[0].length;

for (i = 0; i < y; i++) {

var x = arguments[0].pop();

z.push(x);

}

return z;

}

document.write(a([1, 2, "abc", 4, 5]));

</script>

</body>

</html>

请问同学是想要实现这种效果吗?

  • 提问者 qq_o張i亽_0 #1
    老师的代码里为什么写arguments[0]? 直接写y=a[0].length; 和x=a[0].pop(); 可以吗? 而且中括号里为什么要加[0] 不应该是空的吗[]?
    2018-09-19 12:34:59
  • 妮可妮可妮_ 回复 提问者 qq_o張i亽_0 #2
    将整个数组作为一个参数传进去,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面,所以这个数组是arguments[0],a是一个函数,a[0]不能实现效果
    2018-09-19 13:57:23
  • 提问者 qq_o張i亽_0 回复 妮可妮可妮_ #3
    还是不太懂arguments[0], 讲这个的课是哪一节呢老师? 我去看一遍
    2018-09-19 18:02:22
好帮手慕夭夭 2018-09-19 09:33:34

同学的代码有几处问题:

  1. 在函数外面调用函数没有加括号

  2. 函数中并没有定义变量a ,a是函数名 ,想要使用参数需要传递形参

  3. return z;需要放在for循环的外面 , 否则只是返回最后一次结果哦

  4. 变量x要在for外面定义 ,否则每次循环都会重新定义

如下修改:

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

完善一下吧 , 祝学习愉快 ,望采纳

妮可妮可妮_ 2018-09-18 18:51:40

pop() 方法用于删除并返回数组的最后一个元素。

将数据放入数组可以使用push或者是unshift方法,需要在外面定义一个数组,然后在循环中添加进去,不满足条件的时候停止就可以了

  1. 同学的函数没有调用哦~正确写法为a( ),你忘记写小括号了,

  2. 在for循环中同学并没有使用变量i,是不是思路有点乱呢?

  3. 不知道如何测试代码?同学可以在编辑器上点击自动运行就可以在右侧看到效果了,也可以将代码粘贴在本地的编辑器中,打开网页查看效果

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

  4. 可以参考一下其他已经可以完成效果的同学思路哦:

    https://class.imooc.com/course/qadetail/68008

    https://class.imooc.com/course/qadetail/67262

    加油~祝学习愉快!

  • 提问者 qq_o張i亽_0 #1
    还是不太理解, 我最开始想的是:不只限于数字的颠倒,如果是字符串呢, 然后我就声明了标识符为a空的函数 再声明为z的数组 再声明i=0和y=a的参数长度 然后for:i=0时i<y;i++{ 然后声明x=a.pop()来获取每次循环时删除的参数; 然后再把每次删除的参数添加到z数组里 大概就是这个思路 我的这个思路可以实现吗老师? 如果可以实现代码应该怎么写? }
    2018-09-18 19:42:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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