簡體   English   中英

數組中的 Javascript 數組 - 第一個索引總是被覆蓋

[英]Javascript array in array - first index is always overwritten

我的 JS 函數有問題。 為簡單起見,我想用 n 個其他數組 (arr2) 填充數組 (arr1)。 在我的循環中,我對 arr1 中的當前位置使用了一個計數器(不能使用 arr1.push 是有原因的)。 如果我在 arr1 中記錄所有的 arr2,它們都是相同的,總是最后一個添加的。 所以我寫了一個基本的腳本來測試它。 我總是記錄第一個元素並激活計數器。 我是 JS 新手,有什么我不明白的巨大誤解嗎?

 function test(){ var arr1 = []; var arr2 = []; var counter=1; arr2[0]="first"; arr2[1]="first"; arr2[2]="first"; arr1[0]=arr2; arr1[0].forEach(function(elem){console.log(elem);}); for (var i = 0; i < 10 ; i++) { arr2[0]=counter; arr2[1]=counter; arr2[2]=counter; arr1[counter]=arr2; arr1[0].forEach(function(elem){console.log(elem);}); counter++; } }
 <button onclick="test()">Click</button>

您可以嘗試使用擴展運算符。

arr1[0]=[...arr2];
arr1[counter]=[...arr2];

數組是一種引用類型,因此您總是引用基數,而不是將它的副本放在 arr1 中,而是將引用放在 arr2 中。

您希望將 arr2 的副本分配給 arr1。

你可以通過創建一個新的數組來做到這一點,或者更現代的 ... 展開運算符

正如 Pointy 所說,它只是引用了 arr2 而沒有創建副本。

所以你需要

arr2=new Array();

在循環的開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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