for迴圈外有一個數組,for迴圈內一個對象,每次for迴圈都讓對象的一個屬性值等於數組的對應i項然後在將這個對象push進空數組,為什麼空數組後面展示出來的全一樣的,我用字執行函數把for內包住也不行
高洛峰2017-05-19 10:47:58
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}]
我猜樓主描述的功能應該是這樣。這沒有閉包問題。樓主可以把代碼貼出來嗎?
黄舟2017-05-19 10:47:58
我以前也遇到這種類型的問題,在將一個集合循環到的項push到一個數組中,最後發現數組裡面的項都是一樣的,原因不是很清楚,解決方法是先將循環到的項copy,然後在將這個copy得到的值push到數組中;
//此处只是随意举个例子
var a=[1,2,3,4,5,6];
var b=[];
for(let o of a)
{
b.push(o.clone());
}