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 相关文章推荐
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
jQuery.extend 函数及用法详细
Sep 06 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
Jun 21 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
解决Vue打包后访问图片/图标不显示的问题
Jul 25 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 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
pdo中使用参数化查询sql
2011/08/11 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
python 字符串split的用法分享
2013/03/23 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python3生成手写体数字方法
2018/01/30 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
python绘制中国大陆人口热力图
2018/11/07 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
结婚邀请函范文
2014/01/14 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
酒店营销策划方案
2014/02/07 职场文书
超市中秋节促销方案
2014/03/21 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
捐书仪式主持词
2015/07/04 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python