繁体   English   中英

在 JavaScript 中如何将变量的值传递给不同的调用?

[英]How do you pass the value of a variable to a different call in JavaScript?

我有一个对象test ,具有嵌套属性的字段ab说:

test = {a: {key1: 'value1', key2: 'value2', key3: 'value3'},
       {b: {key1: 'value4', key2: 'value5', key3: 'value6'}}

我希望能够更改ab的嵌套值,但是我要更改的值是可变的。 为清楚起见,我希望能够执行以下操作:

test.$i$.key1: 'value10'

其中$i$是指i持有的值,在本例中为ab

那可能吗?

我知道这很容易用括号表示法解决,但这在我的情况下不起作用。

复制自 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$ 持有的值,在这种情况下是foodcolorsubject

括号表示法在这种情况下不起作用,因为我将一个字符串传递给 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM