js循環修改對象內層元素的值


問題:存在一個對象,該對象的內部元素也為對象,子對象的元素也為對象,...(即多層對象構成的對象,具體如下),那么應該如何修改最內層元素的值(如 obj.a.a.a = 5)?

var obj = {
    a: {
        a:{
            a: 1
        }
    },
    b: {
        b:{
            b: 2
        }
    }
}

所要了解的JS基礎:

1. 將對象賦值給一個變量,只是將對象的地址傳給變量,並非是復制。

2. 將變量賦值給一個變量,值的傳遞是復制,而非地址傳遞。

解決方法:

1. 弄清要修改值為對象內部第幾層(這里假設為 N )的元素,如 obj.a.a.a 為 obj 對象第三層元素。

2. 設一個變量 tmp,利用循環進入到對象的第 N-1 層(這里為2),將第 N-1 層相應的對象賦值給 tmp。

var tmp = obj;
for(var i = 0;i < N-1;i++){
    tmp = tmp.a;
}

3. 修改變量 tmp 下對應的要修改的元素的值,則完成元素值的修改。

tmp.a = 5;

 

注意: 第二步切勿通過循環將 tmp 直接賦值為 obj.a.a.a,然后第三部直接 讓 tmp = 5,因為這樣屬於變量的賦值,而非對象的賦值,其結果將只對tmp賦值,而obj對應元素的值不會變。

 


免責聲明!

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



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