我有一个对象 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
。
括号表示法在这种情况下不起作用,因为我将一个字符串传递给 firebase,它不会像那样解释。
最佳答案
您可以使用括号表示法动态访问对象的属性。
尝试下面的代码:
var test = {
a: {
key1: 'value1',
key2: 'value2',
key3: 'value3'
},
b: {
key1: 'value4',
key2: 'value5',
key3: 'value6'
}
};
var key = 'a';
console.log(test[key].key1);
关于javascript - 如何将变量的值传递给 JavaScript 中的不同调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59879686/