У меня есть объект test
, с полями a
и b
, которые имеют вложенные свойства и говорят:
test = {a: {key1: 'value1', key2: 'value2', key3: 'value3'},
{b: {key1: 'value4', key2: 'value5', key3: 'value6'}}
Я хочу иметь возможность изменять вложенные значения внутри либо a
или b
, но у меня есть переменная, которую я меняю. Для ясности я хочу иметь возможность сделать что-то вроде:
test.$i$.key1: 'value10'
, где $i$
относится к значению, которое содержит i
, в данном случае либо a
, либо b
.
Возможно ли это?
Я знаю, что это легко решить с помощью скобочных обозначений, но это не сработает в моей ситуации.
Скопировано из документации Firebase:
// Create an initial document to update.
var frankDocRef = db.collection("users").doc("frank");
frankDocRef.set({
name: "Frank",
favorites: { food: "Pizza", color: "Blue", subject: "recess" },
age: 12
});
// To update age and favorite color:
db.collection("users").doc("frank").update({
"age": 13,
"favorites.color": "Red"
})
.then(function() {
console.log("Document successfully updated!");
});
Я хочу иметь возможность:
const var1 = 'color'
db.collection("users").doc("frank").update({
"age": 13,
"favorites.$var1$": "Red"
})
, где $ var1 $ относится к значению, которое содержит $ va1r $, в данном случае либо food
, color
или subject
.
В этом случае брекетная нотация не работает, так как я передаю строку в базу данных, которая не интерпретируется таким образом.