Copy an arbitrary n-dimensional array in JavaScript?

后端 未结 4 1991
余生分开走
余生分开走 2020-12-20 08:32

I am basically looking for a general function copy(array) that will return identical n-dimensional array without any references to the former one.

4条回答
  •  长情又很酷
    2020-12-20 09:03

    This is my solution to clone a multidimensional array; Actually i had to invent Array.prototype.clone() in order to invent a function to generate N dimension array and initialize it with a value.

    Array.prototype.clone = function(){
      return this.reduce((p,c,i) => (p[i] = Array.isArray(c) ? c.clone() : c, p),[])
    }
    
    function arrayND(...n){
      return n.reduceRight((p,c) => c = (new Array(c)).fill(true).map(e => Array.isArray(p) ? p.clone() : p ));
    }
    
    var arr = arrayND(...[4,4,4],8); //last argument is the initializing value
    arr[0][1][3] = "eight";
    console.log(JSON.stringify(arr));

提交回复
热议问题