Clone Multidimensional Array in javascript

后端 未结 3 1036
名媛妹妹
名媛妹妹 2020-12-10 20:37

I want to make a clone of multidimensional Array so that i can play arround with the clone array without affecting main Array.

I\'m using following function to do so

3条回答
  •  悲&欢浪女
    2020-12-10 21:11

    You need to use recursion

    var a = [1,2,[3,4,[5,6]]];
    
    Array.prototype.clone = function() {
        var arr = [];
        for( var i = 0; i < this.length; i++ ) {
    //      if( this[i].constructor == this.constructor ) {
            if( this[i].clone ) {
                //recursion
                arr[i] = this[i].clone();
                break;
            }
            arr[i] = this[i];
        }
        return arr;
    }
    
    var b = a.clone()
    
    console.log(a);
    console.log(b);
    
    b[2][0] = 'a';
    
    console.log(a);
    console.log(b);
    
    /*
    [1, 2, [3, 4, [5, 6]]]
    [1, 2, [3, 4, [5, 6]]]
    [1, 2, [3, 4, [5, 6]]]
    [1, 2, ["a", 4, [5, 6]]]
    */
    

    Any other objects in the original array will be copied by reference though

提交回复
热议问题