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 相关文章推荐
js charAt的使用示例
Feb 18 Javascript
jquery分页对象使用示例
Apr 01 Javascript
js判断登录与否并确定跳转页面的方法
Jan 30 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
js实现的星星评分功能函数
Dec 09 Javascript
基于js实现checkbox批量选中操作
Nov 22 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
使用Node.js在深度学习中做图片预处理的方法
Sep 18 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(6) 面向对象
2010/02/16 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
JavaScript—window对象使用示例
2013/12/09 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
接受捐赠答谢词
2014/01/27 职场文书
交通事故被告代理词
2015/05/23 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书