簡體   English   中英

JavaScript創建使用備份陣列

[英]JavaScript create use backup array

只需看一下代碼,您就會明白我的意思:

​var aBackup = [3, 4]; // backup array
​​var a = aBackup; // array to work with is set to backup array
a[0]--; // working with array..
a = aBackup; // array o work with will be rested
console.log(a);  // returns [2, 4] but should return [3, 4]
console.log(aBackup);​ // returns [2, 4] too​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​  but should return [3, 4] too

您需要制作數組的真實副本,而不僅僅是使用引用:

var aBackup = [3, 4]; // backup array
var a = aBackup.slice(0); // "clones" the current state of aBackup into a
a[0]--; // working with array..
a = aBackup.slice(0); // "clones" the current state of aBackup into a 
console.log(a);  // returns [3, 4] 
console.log(aBackup); // returns [3, 4]

有關slice -方法的文檔,請參見MDN

javascript不是將指針用於數組嗎? 應該​​var a = aBackup; 做副本嗎? 否則結果對我來說似乎很正常...

數組是對象的引用類型,因此對其進行的更改將更改其指向的基礎值,a和aBackup將指向相同的值,對a的更改也將更改aBackup。

這是因為執行此操作時,您不是在復制數組,而是實際上是對原始數組的引用。

var a IS aBackup; // if you will

您需要做的就是克隆備份陣列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM