[英]Using push() to copy one array into another
假設我有一個這樣的函數
function createMultiDimArray() {
let results = [];
let current = [];
for (let i = 1; i <= 10; i++) {
current.push(i);
if (i % 2 === 0) {
results.push(current);
current = [];
}
}
return results;
}
當我執行它
let arr = createMultiDimArray();
arr看起來像這樣
[[1,2][3,4][5,6][7,8][9,10]]
我已經在多種瀏覽器中對其進行了測試,並且它似乎可以正常工作。 因此,顯然push()會創建傳遞給它的數組的副本,而不僅僅是使用引用,因為否則arr會看起來像這樣(當函數結束時,當前=== [])
[[],[],[],[],[]]
我已經搜索了Internet,但是沒有發現關於push()這種行為的任何信息。 所以我的問題是:使用push()將一個數組復制到另一個數組是否安全?
push
不會復制數組(或給出的任何參數)。
相反,線
current = [];
創建一個新的數組對象,並將其分配給數組參考current
。 根據您的分析,我想您假設它會清空current
引用的現有數組對象,但事實並非如此。
不,在代碼中,您使用results.push(current);
將值推入結果results.push(current);
,然后使用current = [];
創建一個新的current
數組current = [];
。 因此,在每個偶數之后,您都會得到一組數入results
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.