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