[英]How do you pass the value of a variable to a different call in JavaScript?
我有一个对象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,它不会像那样解释。
您可以使用Bracket notation动态访问对象的属性。
试试下面的代码:
var test = { a: { key1: 'value1', key2: 'value2', key3: 'value3' }, b: { key1: 'value4', key2: 'value5', key3: 'value6' } }; var key = 'a'; console.log(test[key].key1);
要么使用计算属性:
const var1 = 'color'
db.collection("users").doc("frank").update({
"age": 13,
["favorites." + var1]: "Red"
})
或者构造更新调用的“外部”对象:
const var1 = 'color'
const data = { "age": 13 };
data["favorites." + var1] = "Red";
db.collection("users").doc("frank").update(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.