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 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
js中哈希表的几种用法总结
Jan 28 Javascript
jQuery链使用指南
Jan 20 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
Jan 23 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
vue 左滑删除功能的示例代码
Jan 28 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 Javascript
javascript局部自定义鼠标右键菜单
Dec 08 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中str_replace函数使用小结
2008/10/11 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python操作CouchDB的方法
2014/10/08 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
python相似模块用例
2016/03/04 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
抽象类和接口的区别
2012/09/19 面试题
企业后勤岗位职责
2014/02/28 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
环境日宣传活动总结
2014/07/09 职场文书
六年级小学生评语
2014/12/26 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
入党介绍人考察意见
2015/06/01 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers