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脚本
Dec 12 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
js前端面试之同步与异步问题详解
Apr 03 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
Vue中key的作用示例代码详解
Jun 10 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php常见的魔术方法详解
2014/12/25 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python 探针的实现原理
2016/04/23 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
Python list运算操作代码实例解析
2020/01/20 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
如何基于Python按行合并两个txt
2020/11/03 Python
python安装及变量名介绍详解
2020/12/12 Python
创业计划书如何吸引他人眼球
2014/01/10 职场文书
社区健康教育实施方案
2014/03/18 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
动物科学专业求职信
2014/07/27 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
红旗渠导游词
2015/02/09 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android