数组拷贝的方式

//第一种直接赋值的方式
			var arr1=[1,2,'12'];
			var arr2=arr1;
			console.log(arr1+"--------"+arr2);//1,2,12--------1,2,12

			//修改arr2,因为是引用关系,所以arr1的值也进行了变化
			arr2[1]='3';
			console.log(arr1+"--------"+arr2);//1,3,12--------1,3,12
			
			//第二种for循环赋值的方式
			var arr3=[1,4,5,'55'];
			var arr4=[];
			for(var i=0;i<arr3.length;i++){
				arr4[i]=arr3[i];
			}
			console.log(arr3+"--------"+arr4);//1,4,5,55--------1,4,5,55
			//修改arr4
			arr4[1]=2;
			console.log(arr3+"--------"+arr4);//1,4,5,55--------1,2,5,55
			
			//第三种

			var arr5=[121,4,5,'55'];
			var arr6=arr5.concat();
			console.log(arr5+"--------"+arr6);
			arr6[1]='sda';
			console.log(arr5+"--------"+arr6);
			
			//第四种 深度拷贝
			function copyArray2(arr,s){
				var res=s||[];
				for(var i=0;i<arr.length;i++){
					if(Object.prototype.toString.call(arr[i])==='[object Array]'){
						res[i]=[];
						copyArray2(arr[i],res[i]);					
					}else{
						res[i]=arr[i];
					}
				}
				return res;
			}
			var arr1=[1,2,[2,1]];
			var arr2=copyArray2(arr1);
			console.log(arr2);

  

posted on 2017-12-27 16:35  fangfang_yu  阅读(236)  评论(0编辑  收藏  举报

导航