搜尋

首頁  >  問答  >  主體

javascript - for迴圈i問題

for迴圈外有一個數組,for迴圈內一個對象,每次for迴圈都讓對象的一個屬性值等於數組的對應i項然後在將這個對象push進空數組,為什麼空數組後面展示出來的全一樣的,我用字執行函數把for內包住也不行

某草草某草草2831 天前779

全部回覆(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
  • 取消回覆