zoukankan      html  css  js  c++  java
  • 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对应元素的值不会变。

  • 相关阅读:
    [算法初步]希尔排序
    逆波兰表达式1(简介)
    [数据结构]之链表
    [数据结构]之栈
    [算法初步]之归并排序
    [算法初步]之快速排序
    [算法初步]之冒泡排序
    逆波兰表达式2中缀转后缀表达式)
    [算法初步]之简单选择排序
    [数据结构]之顺序表
  • 原文地址:https://www.cnblogs.com/zhcBlog/p/9959211.html
Copyright © 2011-2022 走看看