Heim > Fragen und Antworten > Hauptteil
Es gibt ein Array außerhalb der for-Schleife und ein Objekt innerhalb der for-Schleife. Jedes Mal, wenn die for-Schleife einen Attributwert des Objekts gleich dem entsprechenden i-Element des Arrays macht und das Objekt dann in das leere Array schiebt, Warum zeigen die leeren Arrays dasselbe an? Ja, es funktioniert nicht, selbst wenn ich das for mit einer Wortausführungsfunktion umschließe
高洛峰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());
}