Javascript 复制数组实现代码


Posted in Javascript onNovember 26, 2009

一、 错误实现
不少人可能直接就用等号进行赋值了:

var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1; 
array1.length = 0; 
alert(array2); //返回为空

这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类
型。array2得到的是引用,所以对array1的修改会影响到array2。
二、 使用slice()
可使用slice()进行复制,因为slice()返回也是数组。
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1.slice(0); 
array1.length = 0; 
alert(array2); //返回1、2、3

三、 使用concat()
注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1.concat(); 
array1.length = 0; 
alert(array2); //返回1、2、3

四、 测试
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Array Test</title> 
<script type="text/javascript"> 
var array1; 
var array2; 
function clone1() { 
array1 = new Array("1","2","3"); 
array2 = array1; 
array1.length = 0; 
alert(array2); 
} 
function clone2() { 
array1 = new Array("1","2","3"); 
array2 = array1.slice(0); 
array1.length = 0; 
alert(array2); 
} 
function clone3() { 
array1 = new Array("1","2","3"); 
array2 = array1.concat(); 
array1.length = 0; 
alert(array2); 
} 
</script> 
</head> 
<body> 
<input type="button" value="clone1" onclick="clone1()" /><br /> 
<input type="button" value="clone2" onclick="clone2()" /><br /> 
<input type="button" value="clone3" onclick="clone3()" /><br /> 
</body> 
</html>

在IE8及FF3.0下均通过测试
Javascript 相关文章推荐
javascript自适应宽度的瀑布流实现思路
Feb 20 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
移动端js图片查看器
Nov 17 Javascript
Vue.js父与子组件之间传参示例
Feb 28 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
关于js中的鼠标事件总结
Jul 11 Javascript
javascript基本常用排序算法解析
Sep 27 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
vue实现输入框自动跳转功能
May 20 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
js setattribute批量设置css样式
Nov 26 #Javascript
Javascript 二维数组
Nov 26 #Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
Nov 26 #Javascript
Exitjs获取DataView中图片文件名
Nov 26 #Javascript
网页中的图片的处理方法与代码
Nov 26 #Javascript
js 动态选中下拉框
Nov 26 #Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 #Javascript
You might like
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
简单JS代码压缩器
2006/10/12 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python中的日期时间处理详解
2016/11/17 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
python通过cython加密代码
2020/12/11 Python
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
学生会主席就职演讲稿
2014/01/14 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
闭幕式主持词
2014/04/02 职场文书
房产买卖委托公证书
2014/04/04 职场文书
库房保管员岗位职责
2014/04/07 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
大学生军训感言
2015/08/01 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android