数组拷贝的方式
//第一种直接赋值的方式
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 阅读(243) 评论(0) 收藏 举报
浙公网安备 33010602011771号