繁体   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