当前位置:首页 > 日记 > 正文

JavaScript数组复制详解

JavaScript数组复制详解

前面的话

??前面的博文中介绍了对象拷贝,本文将详细介绍数组复制

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
??使用该方法的缺点是数组中的项全部变成了字符串形式

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] 

深拷贝

??以上方法实现的仅是数组的浅拷贝,如果要实现数组的深拷贝,需要使用递归方法

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]

相关文章

如何在word2013中旋转图形

如何在word2013中旋转图形

图形,如何在,电脑软件,  有时候需要在文档中插入图片,在排版的时候可能会旋转图片做出更加令人赏心悦目的效果;只是插入word里的图片怎么旋转角度呢?那么下面就由小编给大家分享下word2013中旋转图形的技巧,希望能帮助到您。在word2013中…

javascript验证香港身份证的格式或

javascript验证香港身份证的格式或

验证,香港,身份证,真实性,格式,话不多说,请看代码function IsHKID(str) { var strValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" // basic check length if (str.length < 8) return false; // handling bracket if (str.charAt(str.length-…

ppt2010怎样绘制图形

ppt2010怎样绘制图形

绘制图形,方法,电脑软件,  在ppt里面有丰富的形状功能,我们可以插入各种形状绘制自己所要的效果,怎么在ppt2010中绘制图形呢?下面小编就为你提供ppt2010如何画图的方法,希望能帮到大家。ppt2010绘制图形的方法形状图点击&ldquo;插入&rdquo;…

vue mixins组件复用的几种方式(小结

vue mixins组件复用的几种方式(小结

组件,复用,几种,方式,电脑软件,最近在做项目的时候,研究了mixins,此功能有妙处。用的时候有这样一个场景,页面的风格不同,但是执行的方法,和需要的数据非常的相似。我们是否要写两种组件呢?还是保留一个并且然后另个一并兼容另一个呢?不管以上那种…

浅谈angular2的http请求返回结果的

浅谈angular2的http请求返回结果的

返回结果,请求,浅谈,注意事项,电脑软件,实例如下:this.monitorSer.getVehicleLonAndLat(vehicleIds) .subscribe( data => { //将data下的data字符串转化为vehdata数组 this.vehData=JSON.parse(data.data); //功能实现 this.loadO…

详解node中创建服务进程

详解node中创建服务进程

服务进程,详解,电脑软件,node,背景在node工程部署中,常常涉及到三方:本地客户端、跳板机和服务器(集群)。在通过git触发gitlab hook脚本后,需要在跳板机中执行相应的ssh命令执行shell文件启动node服务器,这需要使用一个常用的命令setsid,这样当ssh…

微信筹款怎么弄微信普通筹款的使用

微信筹款怎么弄微信普通筹款的使用

使用方法,怎么弄,电脑软件,strong,  普通筹款是微信新上线的一个功能,那么微信筹款怎么使用呢?下面是小编为大家整编的微信普通筹款的使用方法,大家快来看看吧。微信普通筹款的使用方法1)打开微信应用进入页面点击下方【我】,接着点击【钱包…

js实现点击切换checkbox背景的简单

js实现点击切换checkbox背景的简单

简单实例,背景,电脑软件,js,checkbox,在制作网页的过程中,经常需要实现点击切换背景图片的效果,本文关注的是表单中checkbox背景图片切换的实现。如图,在输入用户名和密码后,用户需要选择是否记住密码图片背景为白色表示未勾选状态 。HTML源码…

详谈js中标准for循环与foreach | f

详谈js中标准for循环与foreach | f

循环,区别,标准,电脑软件,js,js中遍历数组的有两种方式var array=['a']//标准的for循环for(var i=1;i<array.length;i++){ alert(array[i])}//foreach循环for(var i in array){ alert(array[i])}正常情况下上面两种遍历数组的方式结果…

对称加密与非对称加密优缺点详解

对称加密与非对称加密优缺点详解

对称加密,优缺点,与非,详解,电脑软件,对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效…

Java中int与integer的区别(基本数据

Java中int与integer的区别(基本数据

引用数据类型,基本数据类型,区别,电脑软件,Java,一、先说说int与integer的区别  int 是基本数据类型,默认值为0,不需要进行实例化integer 是引用数据类型,是int的封装类型,默认值为null,创建该类型需要进行实例化。基本数据类型是可以用“==”…

全图型PPT的制作方法是什么样的

全图型PPT的制作方法是什么样的

制作方法,全图,电脑软件,PPT,  图片视觉要有冲击力 ,文字精炼要有内涵,这就是全图型PPT!以下是小编为您带来的关于全图型PPT的制作方法,希望对您有所帮助。全图型PPT的制作方法一、大图配字二、艺术字体三、借图发挥四、蒙版色变五、色块切…