為什么我只改了JS數組中的一個對象的元素的值,其他對象的元素值都跟着變了



    var tmp_arr_1 = new Array();
    var tmp1 = {'type':1,'plan_num':200};
    tmp_arr_1.push(tmp1);
    tmp_arr_1.push(tmp1);
    
    console.log(tmp_arr_1);
    tmp_arr_1[0]['type'] = '-----';
    console.log('--變化一個后--');
    console.log(tmp_arr_1);
    return;


由於數組是引用變量 ,進行引用賦值 , 其實還是原來的數組 , 也就是說 ,我賦給tmp_arr_1,其實一直都是同一個地址里存的同一個數組 , 
所以 ,最后一次修改payArr 后 ,每個引用都一起改掉了 , 那么怎么解決呢 ?

dataList[i].payArr = JSON.parse(JSON.stringify(payArr)) ; 
原理就是先把數組轉換成字符串再轉換成對象 ,這樣會新分配一塊內存新創建一個對象 ,
這是一個基礎坑




    var tmp_arr_2 = new Array();
    var tmp1 = {'type':1,'plan_num':200};
    tmp_arr_2.push(JSON.parse(JSON.stringify(tmp1)));
    tmp_arr_2.push(JSON.parse(JSON.stringify(tmp1)));
    console.log(tmp_arr_2);
    tmp_arr_2[0]['type'] = '-----';
    console.log('--變化一個后--');
    console.log(tmp_arr_2);
    return;





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM