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());
}