搜索

首页  >  问答  >  正文

javascript - for循环i问题

for循环外有一个数组,for循环内一个对象,每次for循环都让对象的一个属性值等于数组的对应i项然后在将这个对象push进空数组,为什么空数组后面展示出来的全一样的,我用字执行函数把for内包住也不行

某草草某草草2745 天前719

全部回复(6)我来回复

  • 为情所困

    为情所困2017-05-19 10:47:58

    你说的新数组的后面都一样,是指的是数组里面元素都一样吗?应该是作用域问题,利用闭包应该能解决。

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:47:58

    你把循环体的那个对象push进空数组是在循环体内进行还是结束后 你所说的空数组里面的内容不是这个对象吗?

    回复
    0
  • 高洛峰

    高洛峰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}]

    我猜楼主描述的功能应该是这样。这没有闭包问题。楼主可以把代码贴出来吗?

    回复
    0
  • 黄舟

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

    回复
    0
  • PHP中文网

    PHP中文网2017-05-19 10:47:58

    说话很便宜,给我看代码

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:47:58

    没有发码,是为了刷流氓

    回复
    0
  • 取消回复