无法执行。。。不知道哪里有问题,麻烦老师给我解答下

无法执行。。。不知道哪里有问题,麻烦老师给我解答下

    function arrReverse(arr){
        var newArr=[];
        for(var i=0;i<arr.length;i++){
           // 把循环到的数组内容,赋值给新数组 当前索引
           newArr[i]=arr[arr.length-1-i];
           // 返回数组
           return newArr;
        }
       // 数组倒序
       newArr.reverse();   
    }
   document.write(arrReverse([1,2,3,4,5,6,7,8]));


正在回答

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

4回答

同学,你好。

你的分析不对,arr的长度是7,不是8,参考下图:

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

如果帮助到了你,欢迎采纳!

祝学习愉快!

  • 007号学员 提问者 #1
    那个我是按我写的代码来分析的,嗯,大概什么情况,我明白了。
    2019-05-31 10:12:46
Miss路 2019-05-30 15:46:03

同学,你好。

你第二次写的代码主要问题和第一次是一样的,都是对这两个地方不理解,下面截图中有做注释解释,你好好分析一下:

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

你可以参考这两种方式,两种方式不能合在一起用:

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

如果帮助到了你,欢迎采纳!

祝学习愉快!

  • 提问者 007号学员 #1
    不是很能理解,arr[ arr.length - i - 1 ] arr[ 8 - 0 - 1 ] => arr [ 7 ] = newArr[ 0 ] = 8 ??? arr[ 8 - 1 - 1 ] => arr [ 6 ] = newArr[ 1 ] = 7 ??? arr[ 8 - 2 - 1 ] => arr [ 5 ] = newArr[ 2 ] = 6 ??? arr[ 8 - 3 - 1 ] => arr [ 4 ] = newArr[ 3 ] = 5 ??? arr[ 8 - 4 - 1 ] => arr [ 3 ] = newArr[ 4 ] = 4 ??? arr[ 8 - 5 - 1 ] => arr [ 2 ] = newArr[ 5 ] = 3 ??? arr[ 8 - 6 - 1 ] => arr [ 1 ] = newArr[ 6 ] = 3 ??? arr[ 8 - 7 - 1 ] => arr [ 0 ] = newArr[ 7 ] = 3 ??? 不知道这么推理出来是否正确?
    2019-05-31 09:38:25
Miss路 2019-05-30 15:12:35

同学,你好。

注意这两块的书写:

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

不能在循环中返回数组,要在循环外面返回新的数组,并且不需要用reverse方法调用,你写的这个方法就是要替代这个reverse方法的。

如果帮助到了你,欢迎采纳!

祝学习愉快!

  • 提问者 007号学员 #1
    我下面又改了,自己的想法,不知道 是否行。。。 帮我分析下。
    2019-05-30 15:14:52
提问者 007号学员 2019-05-30 10:15:13
function arrReverse(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        // 检测了一下 i 就是存储的值, 每一次循环把 i 赋值 给 newArr 数组 就OK 了
         console.log(i)
         newArr[i] = i;
    }
    // 上面经过,断点调试找到问题,return 在循环内部,第一次循环完毕就退出了。
    //  返回 倒序后的数组
    return newArr.reverse();
}

document.write(arrReverse([1, 2, 3, 4, 5, 6, 7, 8]));


  • 提问者 007号学员 #1
    function arrReverse(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { //补充代码 console.log(i) newArr[i] = i + 1; } //补充代码 return newArr.reverse(); } document.write(arrReverse([1, 2, 3, 4, 5, 6, 7, 8]));
    2019-05-30 10:16:28
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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