JS中快速复制数组的方法

一、 错误实现
vararray1= newArray("1","2","3");
vararray2;
array2=array1;
array1.length=0;
alert(array2); // 返回为空

这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类

型。array2得到的是引用,所以对array1的修改会影响到array2。

二、 使用slice()

可使用slice()进行复制,因为slice()返回也是数组。

vararray1=newArray("1","2","3");
vararray2;
array2=array1.slice(0);
array1.length=0;
alert(array2);//返回1、2、3

三、 使用concat()

注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。

vararray1=newArray("1","2","3");
vararray2;
array2
=array1.concat();
array1.length
=0;
alert(array2);
//返回1、2、3

四、 测试

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<title>ArrayTest</title>
<scripttype="text/javascript">
vararray1;
vararray2;

functionclone1(){
array1
=newArray("1","2","3");
array2
=array1;
array1.length
=0;
alert(array2);
}

functionclone2(){
array1
=newArray("1","2","3");
array2
=array1.slice(0);
array1.length
=0;
alert(array2);
}

functionclone3(){
array1
=newArray("1","2","3");
array2
=array1.concat();
array1.length
=0;
alert(array2);
}

</script>

</head>
<body>
<inputtype="button"value="clone1"onclick="clone1()"/><br/>
<inputtype="button"value="clone2"onclick="clone2()"/><br/>
<inputtype="button"value="clone3"onclick="clone3()"/><br/>
</body>
</html>

转载自 编程知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值