I want to make a clone of multidimensional Array so that i can play arround with the clone array without affecting main Array.
Array.prototype.clone = function () {
var newArray = new Array(this.length);
for(var i=0; i < this.length; i++ ){
newArray[i] = this[i];
}
return newArray;
};
But problem which is since it is using array prototype so it will clone my all array.so can any body tell me what is the best way of doing this.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With