全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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]



# javascript  # 数组复制  # javascript数组详解  # javascript详解  # jQuery中json对象的复制方式介绍(数组及对象)  # JavaScript 数组的深度复制解析  # javascript 三种数组复制方法的性能对比  # Javascript 复制数组实现代码  # javascript复制对象使用说明  # js中如何复制一个对象并获取其所有属性和属性对应的值  # 原生js实现复制对象、扩展对象 类似jquery中的extend()方法  # 深入理解JavaScript中的对象复制(Object Clone)  # 改进版通过Json对象实现深复制的方法  # JavaScript数组和对象的复制  # 递归  # 仅是  # 详细介绍  # 组中  # 博文  # 变成了  # function  # js  # copyArray  # var  # arr  # brush  # br  # push  # class  # pre  # result  # concat  # split  # join 


相关文章: 品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何高效利用200m空间完成建站?  青岛网站建设如何选择本地服务器?  如何通过.red域名打造高辨识度品牌网站?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何在建站主机中优化服务器配置?  高端建站三要素:定制模板、企业官网与响应式设计优化  建站之星如何修改网站生成路径?  建站主机服务器选购指南:轻量应用与VPS配置解析  c# 在高并发下使用反射发射(Reflection.Emit)的性能  制作企业网站建设方案,怎样建设一个公司网站?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何将凡科建站内容保存为本地文件?  公司网站制作价格怎么算,公司办个官网需要多少钱?  c# 服务器GC和工作站GC的区别和设置  建站之星导航菜单设置与功能模块配置全攻略  内部网站制作流程,如何建立公司内部网站?  C#如何序列化对象为XML XmlSerializer用法  简历在线制作网站免费,免费下载个人简历的网站是哪些?  电商网站制作价格怎么算,网上拍卖流程以及规则?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何配置WinSCP新建站点的密钥验证步骤?  音乐网站服务器如何优化API响应速度?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何获取免费开源的自助建站系统源码?  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星代理如何优化在线客服效率?  如何自定义建站之星模板颜色并下载新样式?  建站之星客服服务时间及联系方式如何?  婚礼视频制作网站,学习*后期制作的网站有哪些?  定制建站流程步骤详解:一站式方案设计与开发指南  家具网站制作软件,家具厂怎么跑业务?  建站之星后台密码遗忘?如何快速找回?  如何零基础在云服务器搭建WordPress站点?  XML的“混合内容”是什么 怎么用DTD或XSD定义  网站制作网站,深圳做网站哪家比较好?  公众号网站制作网页,微信公众号怎么制作?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何在Windows服务器上快速搭建网站?  html制作网站的步骤有哪些,iapp如何添加网页?  建站主机功能解析:服务器选择与快速搭建指南  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站168自助建站系统:快速模板定制与SEO优化指南  建站之星如何助力网站排名飙升?揭秘高效技巧  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何基于云服务器快速搭建网站及云盘系统?  成都网站制作报价公司,成都工业用气开户费用?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。