JavaScript对象

如何将obj对象的key与obj2的key对比,相等将obj的值填写到obj2的standard的值里面,形成res


onst obj = {
      "hz": "12",
      "hw": {
        "cm": "21",
        "m": "11"
      },
      "fr": {
        "cm_U": "12",
        "m_S": "22"
      }
    }

    const obj2 = {
      hz: {
        name: 'a',
        data: [{
          note: '',
          avg: {
            value: '',
            unit: '%'
          },
          standard: {
            value: '',
            unit: '%'
          }
        }]
      },
      hw: {
        name: 'b',
        data: [{
            note: 'cm',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '',
              unit: '%'
            }
          },
          {
            note: 'm',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '',
              unit: '%'
            }
          }
        ]
      },
      fr: {
        name: 'c',
        data: [{
            note: 'cm_U',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '',
              unit: '%'
            }
          },
          {
            note: 'm_S',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '',
              unit: '%'
            }
          },
        ]
      }
    };
const res = {
      hz: {
        name: 'a',
        data: [{
          note: '',
          avg: {
            value: '',
            unit: '%'
          },
          standard: {
            value: '12',
            unit: '%'
          }
        }]
      },
      hw: {
        name: 'b',
        data: [{
            note: 'cm',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '21',
              unit: '%'
            }
          },
          {
            note: 'm',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '11',
              unit: '%'
            }
          }
        ]
      },
      fr: {
        name: 'c',
        data: [{
            note: 'cm_U',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '12',
              unit: '%'
            }
          },
          {
            note: 'm_S',
            avg: {
              value: '',
              unit: '%'
            },
            standard: {
              value: '22',
              unit: '%'
            }
          },
        ]
      }
    };

用下面的代码处理obj2

//const obj =。。。。
//const obj2 =。。。。

   for (let attr in obj) {
        if (typeof (obj[attr]) == 'object') {
            Object.keys(obj[attr]).forEach(key => {
                let obj2item = obj2[attr].data.find(i => i.note == key);
                if (obj2item) obj2item.standard.value = obj[attr][key];
            })
        }
        else {
            for (let item of obj2[attr].data) item.standard.value = obj[attr];
        }
    }
    console.log(obj2);

  • 这篇博客: JavaScript中对象的常用方法(es6-es12新增)中的 2. Object.keys(obj) 以数组的形势返回对象的可枚举属性和方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • const obj = {
       name:'wyy',
       age:22,
       say:function(){
             console.log(1111);
           }
    }
    console.log(Object.keys(obj)); //   ['name', 'age', 'say']

    在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632