js循环修改对象内层元素的值

Posted zhcgis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对应元素的值不会变。

 

以上是关于js循环修改对象内层元素的值的主要内容,如果未能解决你的问题,请参考以下文章

排序-冒泡排序

数组中冒泡排序直接选择排序反序排序原理与区别

如何让外层div自动适应内层div的高度和宽度

js代码嵌套问题,为啥外层定义的变量内层不能使用

JS深拷贝数组和对象

内层div和外层的div高度相同