多维数组的深复制和该函数封装

146 阅读1分钟
    //Array.isArray() 判断数组
    var arr = [1,2,3,4,[5,6,[7,8]]]; //一个三维数组

    // var arr2 = arr.slice()
    // console.log(arr2);
    function deepArr(arr) {  //构造一个函数
        var newArr = []     //var 一个函数用于装东西 记得一定在for外层
        for(var i = 0; i < arr.length ; i++){  //遍历一下第层的数组小标
            
            //newArr.push(arr[i])  这个arr[i]有可能还是一个数组
            if(Array.isArray(arr[i])) {   //判断第一层下标上的数组/数值    是数组内部调用一下这个函数继续遍历
                //继续遍历数组 ,还是得到一个数组
                var list = deepArr(arr[i]);   //拿一个list盒子装起来 ,
                //再把得到的数组放入newArr
                newArr.push(list)     //向newArr尾部加入数组数组数组数组数组
            }else {  //判断第一层下标上的数组/数值    是数组内部调用一下这个函数继续遍历
                newArr.push(arr[i]);  //向newArr尾部加入数值数值数值数值数值
            }
            
        }
        return newArr //外面传了一个信号进入,里面处理完毕.返回处理结果
    }

    var res = deepArr(arr) ;
    res[4].push('a');
    
    console.log(res)
    console.log(arr);;
    
    

image.png