为了账号安全,请及时绑定邮箱和手机立即绑定

js递归函数的疑惑

js递归函数的疑惑

www说 2019-03-14 16:15:12
1,这个递归函数返回这个j=[1, 2, 3, 4, 5]<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <body>        <script type="text/javascript">            var a = [1, 2, 3, 4, 5, [6, 2, 3, 4]];            function copyarr(obj) {                var j = [];                for(var i = 0; i < obj.length; i++) {                    if(typeof obj[i] == 'object') {                        copyarr(obj[i]);                    } else {                        j[i] = obj[i];                    }                }                return j;            }            var j = copyarr(a);            console.log(j) //        </script>    </body></html>我的理解是这个函数在进行递归调用自己的时候,把这个j的值修改改变为[6,2,3,4,5],而最后return了这个j,最终返回结果是循环没进行到递归函数的数值,是不是进行到递归函数之后无论如何改变这个j,只要是操作之前的数值,到最后递归完成之后还是不会改变?
查看完整描述

4 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

你这个j数组会初始化多次啊 .


查看完整回答
反对 回复 2019-03-20
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

1,你希望返回什么值? [6,1,2,3,4,5]?

2, 这个递归每调用一次自身,其内部定义了一个自己的 j, 并返回,但是外表并没与接收。


var a = [1, 2, 3, 4, 5, [6, 2, 3, 4]];

var j = [];

function copyarr(obj,target) {

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

        if(typeof obj[i] == 'object') {

           copyarr(obj[i],target);

         } else {

            target.indexOf(obj[i]) === -1 && (target[i] = obj[i]);

         }

    } 

}

copyarr(a,j);

console.log(j);


查看完整回答
反对 回复 2019-03-20
?
萧十郎

TA贡献1815条经验 获得超13个赞

<script type="text/javascript">


        var a = [1, 2, 3, 4, 5, [6, 2, 3, 4]];


        function copyarr(obj) {

            var j = [];

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

                if(typeof obj[i] == 'object') {

                    j = j.concat(copyarr(obj[i]));//[6, 2, 3, 4]

                } else {

                    j[i] = obj[i];

                }

            }

            return j;

        }

        var j = copyarr(a);

        console.log(j) //

    </script>

    这样的话就会结果就是原数组


查看完整回答
反对 回复 2019-03-20
  • 4 回答
  • 0 关注
  • 509 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号