1. 程式人生 > >JS中快速複製陣列的方法

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

四、 測試

<!>
<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>

轉載自 程式設計知識