2016-10-21 86 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);

相關問題