JS中快速複製陣列的方法
阿新 • • 發佈:2019-02-07
vararray1=newArray("1","2","3");
vararray2;
array2=array1;
array1.length=0;
alert(array2);//返回為空 返回1、2、3
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>
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);//
三、 使用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>
<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=
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>
轉載自 程式設計知識網