Detailed explanation of JavaScript Array replication and javascript Array
Previous
The previous blog post on copying objects describes object copying. This article describes how to copy arrays in detail.
Push
function copyArray(arr){ var result = []; for(var i = 0; i < arr.length; i++){ result.push(arr[i]); } return result;}var obj1=[1,2,3];var obj2=copyArray(obj1);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3]obj2.push(4);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3,4]
Join
The disadvantage of using this method is that all the items in the array have become strings.
function copyArray(arr){ var result = []; result = arr.join().split(','); return result;}var obj1=[1,2,3];var obj2=copyArray(obj1);console.log(obj1); //[1,2,3]console.log(obj2); //['1','2','3']obj2.push(4);console.log(obj1); //[1,2,3]console.log(obj2); //['1','2','3',4]
Concat
function copyArray(arr){ var result = []; result = arr.concat(); return result;}var obj1=[1,2,3];var obj2=copyArray(obj1);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3]obj2.push(4);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3,4]
Slice
function copyArray(arr){ var result = []; result = arr.slice(); return result;}var obj1=[1,2,3];var obj2=copyArray(obj1);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3]obj2.push(4);console.log(obj1); //[1,2,3]console.log(obj2); //[1,2,3,4]
Deep copy
The method above implements only the shortest copy of the array. If you want to implement the deep copy of the array, you need to use the recursive method.
function copyArray(arr,result){ var result = result || []; for(var i = 0; i < arr.length; i++){ if(arr[i] instanceof Array){ result[i] = []; copyArray(arr[i],result[i]); }else{ result[i] = arr[i]; } } return result;}var obj1=[1,2,[3,4]];var obj2=copyArray(obj1);console.log(obj1[2]); //[3,4]console.log(obj2[2]); //[3,4]obj2[2].push(5);console.log(obj1[2]); //[3,4]console.log(obj2[2]); //[3,4,5]