1. 程式人生 > >js陣列遞迴實現深拷貝

js陣列遞迴實現深拷貝

js的拷貝分深拷貝和淺拷貝

在淺拷貝中。for和呼叫自身建構函式的方法

在深拷貝中,最常見的有呼叫json函式

json.parse(json.pstringity())

還有一種是呼叫for迴圈雙層for

例如:

<script>
var arr=[[1,2,3],4,5,6,[7,8,9]];
		var arrn=new Array();
for (i in arr){
			// document.write(arr[i]+arr[i].length+"<br>");
			if(arr[i].length!=undefined){
				arrn[i]=new Array();
				for(j in arr[i]){
					arrn[i][j]=arr[i][j];
				}
			}else{
				arrn[i]=arr[i];
			}
		}
</script>

突發奇想的我想可不可以寫出一個遞迴函式封裝實現不管多少層都可以

開始想了想

首先要當原來第n層陣列是個object第n層的時候新建第n層的陣列,然後給第n層的陣列賦值。

下面是程式碼實現

	function deep_copy(arr,newarr){
			for(i in arr){
				if(typeof arr[i]=='object'){
					newarr[i]=[];
					return deep_copy(arr[i],newarr[i])
				}else{
					newarr[i]=arr[i];
				}
			}
		}

發現可以實現了