#javascript #object #replace #nested
Вопрос:
У меня возникли проблемы с эффективной идентификацией / заменой значения, которое мне нужно внутри объекта для приложения для редактирования ставок оплаты.
{
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
внутри самого глубокого объекта в зависимости от редактируемого поля. На данный момент я просто продолжаю получать все более и более запутанный код, пытаясь проникнуть в объект, прочитать его, а затем заменить правильное значение. У меня есть пример, приведенный здесь. Пожалуйста, успокойтесь, я все еще учусь. Совет был бы весьма признателен.В настоящее время моя проблема заключается в том, что я возвращаю массив, полный неопределенных значений, а затем один объект, который мне нужен. Заранее спасибо.
Ответ №1:
Я вошел в ваш пример и взял объект верхнего уровня ‘NEWRATES’. Приведенный ниже пример кода проходит через каждый из подобъектов NEWRATES[‘ltc’][0][‘Infinity’][‘Physicians’][‘associates’] и выводит значение под ключом ‘value’. Он также выполняет быструю проверку типа, поскольку самый низкий уровень содержит некоторые ключи, которые сопоставляются со строками, например (OrgName: «Бесконечность»).
Вызов функции 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’, чтобы выполнить итерацию по другим частям объекта верхнего уровня.