簡體   English   中英

使用push()將一個數組復制到另一個數組

[英]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.

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