2016-10-21 58 views
0

我学习JavaScript和我试图复制一个数组的内容到另一个使用下面的代码:为什么此数组复制不能按预期工作?

var arr1 = [1, 2, 3]; 
 
var arr2 = []; 
 

 
// I expect it to copy elements from arr1 to arr2 
 
arr1.forEach(Array.prototype.push, arr2); 
 

 
// I expected the length of arr2 to be 3 
 
console.log(arr2.length); // but it logs 9

请不要给我建议的替代方法可以复制数组的内容,我正在学习JS,并想知道为什么它不起作用?谢谢

+0

只要看看ARR2的价值,你执行的代码之后。这将是意想不到的:) – Dzhambazov

回答

1

由于您通过Array.prototype.push作为函数,它将采用回调处理程序所需的所有三个参数(项目,索引,数组),并将其推送到数组。

看看这个输出

[1, 0, Array[3], 2, 1, Array[3], 3, 2, Array[3]] 

您在n+0th指数,指数在n+2th指数将在项指数n+1th和数组。

1

裹在函数中剥离出第二个和第三个参数是forEach通行证push

var arr1 = [1, 2, 3]; 
 
var arr2 = []; 
 

 
arr1.forEach(function(value, index, arr) { 
 
    this.push(value); 
 
}, arr2); 
 

 
console.log(arr2);

相关问题