JavaScript数组复制详解

发布时间 - 2026-01-10 22:49:23    点击率:

前面的话

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

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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  重庆市网站制作公司,重庆招聘网站哪个好?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel中的withCount方法怎么高效统计关联模型数量  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  香港服务器选型指南:免备案配置与高效建站方案解析  如何在VPS电脑上快速搭建网站?  如何在宝塔面板中创建新站点?  Laravel观察者模式如何使用_Laravel Model Observer配置  JavaScript如何操作视频_媒体API怎么控制播放  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  php打包exe后无法访问网络共享_共享权限设置方法【教程】  EditPlus中的正则表达式实战(6)  高端企业智能建站程序:SEO优化与响应式模板定制开发  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  简单实现Android文件上传  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  phpredis提高消息队列的实时性方法(推荐)  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何在七牛云存储上搭建网站并设置自定义域名?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  WEB开发之注册页面验证码倒计时代码的实现  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  进行网站优化必须要坚持的四大原则  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  jQuery 常见小例汇总  Laravel如何生成URL和重定向?(路由助手函数)  nginx修改上传文件大小限制的方法  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  JavaScript Ajax实现异步通信  如何在建站之星网店版论坛获取技术支持?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  如何挑选高效建站主机与优质域名?  bootstrap日历插件datetimepicker使用方法  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  装修招标网站设计制作流程,装修招标流程?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何快速搭建自助建站会员专属系统?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?