数组拷贝的方式
//第一种直接赋值的方式 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) 编辑 收藏 举报