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

来源:2-23 编程练习

007号学员

2019-05-30 10:07:50

    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回答

Miss路

2019-05-31

同学,你好。

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

http://img.mukewang.com/climg/5cf08be10001387711660316.jpg

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

祝学习愉快!

1
007号学员
h 那个我是按我写的代码来分析的,嗯,大概什么情况,我明白了。
h019-05-31
共1条回复

Miss路

2019-05-30

同学,你好。

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

http://img.mukewang.com/climg/5cef8a170001f05f10610485.jpg

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

http://img.mukewang.com/climg/5cef88430001208305470445.jpg

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

祝学习愉快!

0
007号学员
h 不是很能理解,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 ??? 不知道这么推理出来是否正确?
h019-05-31
共1条回复

Miss路

2019-05-30

同学,你好。

注意这两块的书写:

http://img.mukewang.com/climg/5cef822d0001917607460672.jpg

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

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

祝学习愉快!

0
007号学员
h 我下面又改了,自己的想法,不知道 是否行。。。 帮我分析下。
h019-05-30
共1条回复

007号学员

提问者

2019-05-30

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]));


0
007号学员
h 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]));
h019-05-30
共1条回复

0 学习 · 40143 问题

查看课程