首页 > 解决方案 > 用嵌套对象内的新键值对替换键值对

问题描述

我无法有效地识别/替换我需要在对象中用于编辑工资率应用程序的值。


    {
        Physicians: {
          telehealth: {
            orgName: "ORG B",
            weekdayEncounters: { type: "each", value: 15 },
            weeknightEncounters: { type: "each", value: 16.25 },
            weekendDayEncounters: { type: "each", value: 16.25 },
            weekendNightEncounters: { type: "each", value: 17.25 },
            holidayEncounters: { type: "each", value: 17.25 },
            stipend: { type: "lump", value: 0 },
          },
        },
        NonPhysicians: {
          telehealth: {
            orgName: "ORG B",
            weekdayEncounters: { type: "each", value: 15 },
            weeknightEncounters: { type: "each", value: 16.25 },
            weekendDayEncounters: { type: "each", value: 16.25 },
            weekendNightEncounters: { type: "each", value: 17.25 },
            holidayEncounters: { type: "each", value: 17.25 },
            stipend: { type: "lump", value: 0 },
          },
        },
        date: "07-2021",
        orgName: "ORG B",
        ltc: false,
      }

我希望value根据编辑的字段替换最深的对象内部。在这一点上,我只是不断地获得越来越混乱的代码,试图挖掘对象并读取它,然后替换正确的值。我在这里写了一个例子。请放轻松,我还在学习。建议将不胜感激。我当前的问题是我返回一个充满未定义的数组,然后返回我需要的一个对象。提前致谢。

标签: javascriptobjectreplacenested

解决方案


我进入了您的示例并采用了顶级对象“NEWRATES”。下面的示例代码遍历每个子对象 NEWRATES['ltc'][0]['Infinity']['Physicians']['associates'],并打印键 'value' 下的值。它还快速检查类型,因为最低级别包含一些映射到字符串的键,例如(orgName:“Infinity”)。

Object.entries 函数调用对于使指示的对象 NEWRATES[...] 可迭代是必要的。

for( let [key,value] of Object.entries(NEWRATES["ltc"][0]['Infinity']['Physicians']['associates']) ){
    if(typeof value == "object"){
        console.log('value is: ' + value.value);
    }
}

这应该足以让你重新开始。只需从 'ltc' -> 'standard' , 'Physicians' -> 'NonPhysicians' 替换顶级键,即可遍历顶级对象的其他部分。


推荐阅读