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 相关文章推荐
再谈ie和firefox下的document.all属性
Oct 21 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
javascript中数组中求最大值示例代码
Dec 18 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
AngularJS基础 ng-keyup 指令简单示例
Aug 02 Javascript
vue-router 学习快速入门
Mar 01 Javascript
vue component组件使用方法详解
Jul 14 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
Apr 09 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
Jul 31 Javascript
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方法调用模式与函数调用模式简例
2011/09/20 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python模块导入的方法
2019/10/24 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
吸烟检讨书2000字
2014/02/13 职场文书
投标担保书范文
2014/04/02 职场文书
社团活动总结范文
2014/04/26 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
新闻稿标题
2015/07/18 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript