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 相关文章推荐
深入理解JavaScript系列(6) 强大的原型和原型链
Jan 15 Javascript
js控制淡入淡出示例代码
Nov 12 Javascript
jquery轮播的实现方式 附完整实例
Jul 28 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
Aug 08 Javascript
百度搜索框智能提示案例jsonp
Nov 28 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
Jul 04 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
TypeScript高级用法的知识点汇总
Dec 17 Javascript
JS数组方法some、every和find的使用详情
Oct 05 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
十八届三中全会个人学习材料
2014/02/13 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
代收款委托书范本
2014/10/01 职场文书
项目安全员岗位职责
2015/02/15 职场文书
六年级语文教学反思
2016/03/03 职场文书