#javascript
#javascript
Вопрос:
Я столкнулся с проблемой манипулирования объектом. Я хочу изменить значение ключа, но я не знаю, как изменить это значение, не зная значения родительского объекта.
Мой пример будет говорить за меня.
Мой объект выглядит так :
{day: {
monday: {
startTime: 2,
endTime: 1
}
}}
Я хочу изменить значение «startTime», я знаю, что могу сделать :
{day: {monday:{starTime: [value]}}}
Но проблема в том, что я не знаю второго ключа (это может быть любой день недели). Нравится
{know: {
unknow: {
know: valueToChange
}
}}
Вы знаете трюк для этого?
Комментарии:
1. Будет ли в этом объекте только одно свойство?
2. Нет, это может быть от 1 до 7, и я этого тоже не знаю
3. Итак, если их 7, какое из них вы хотите изменить? Все из них?
4. Это было только для одного, @Evgency дайте мне решение, спасибо 🙂
Ответ №1:
Вы можете просмотреть все значения там и изменить каждое по итерации:
const data = {
day: {
monday: {
startTime: 2,
endTime: 1
},
tuesday: {
startTime: 2,
endTime: 1
}
}
}
Object.keys(data.day).forEach(key => {
data.day[key].startTime = 10 // some known value
})
console.log(data)
Таким образом, вы можете изменить их все или проверить, есть ли какой-то конкретный ключ, который вы хотите изменить, если вы не хотите изменять их все
Ответ №2:
Это также может быть одним из многих решений.Мы можем использовать рекурсию
let data = {
day: {
monday: {
startTime: 1,
endTime: 1
}
}
};
function getStartTime(data) {
if (data.startTime) {
data.startTime = 6;
} else {
getStartTime(Object.values(data)[0]);
}
}
getStartTime(data);
console.log(data);