for迴圈外有一個數組,for迴圈內一個對象,每次for迴圈都讓對象的一個屬性值等於數組的對應i項然後在將這個對象push進空數組,為什麼空數組後面展示出來的全一樣的,我用字執行函數把for內包住也不行
你說的新數組的後面都一樣,是指的是數組裡面元素都一樣嗎?應該是作用域問題,利用閉包應該可以解決。
你把循環體的那個物件push進空數組是在循環體內進行還是結束後 你所說的空數組裡面的內容不是這個物件嗎?
let obj={a:1}; let arr = [{a:1},{a:2},{a:3},{a:1,b:1}]; let arr2 =[]; for(let o of arr){ if(o.a == obj.a){ arr2.push(o); } } console.log(arr2);//arr2=[{a:1},{a:1,b:1}]
我猜樓主描述的功能應該是這樣。這沒有閉包問題。樓主可以把代碼貼出來嗎?
我以前也遇到這種類型的問題,在將一個集合循環到的項push到一個數組中,最後發現數組裡面的項都是一樣的,原因不是很清楚,解決方法是先將循環到的項copy,然後在將這個copy得到的值push到數組中;
//此处只是随意举个例子 var a=[1,2,3,4,5,6]; var b=[]; for(let o of a) { b.push(o.clone()); }
說話很便宜,給我看代碼
沒有發碼,是為了刷流氓
你說的新數組的後面都一樣,是指的是數組裡面元素都一樣嗎?應該是作用域問題,利用閉包應該可以解決。
你把循環體的那個物件push進空數組是在循環體內進行還是結束後 你所說的空數組裡面的內容不是這個物件嗎?
我猜樓主描述的功能應該是這樣。這沒有閉包問題。樓主可以把代碼貼出來嗎?
我以前也遇到這種類型的問題,在將一個集合循環到的項push到一個數組中,最後發現數組裡面的項都是一樣的,原因不是很清楚,解決方法是先將循環到的項copy,然後在將這個copy得到的值push到數組中;
說話很便宜,給我看代碼
沒有發碼,是為了刷流氓