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到数组中;
说话很便宜,给我看代码
没有发码,是为了刷流氓