嗨,我有一个非常简单的问题。我需要在每个循环中从状态中获取新值。在第一个循环中,我需要绑定到varCase.intro1->接下来,我需要绑定到varCase.intro2,依此类推。我知道如何更改要在其中创建的对象中的键,但是我不确定如何动态更改值。
如果您有一个不需要创建常量的解决方案,那么每个循环也将是首选(因为我在完整对象中有很多键)。
谢谢。
我尝试将其设置为const intro = [varCase.intro + i],但它返回的是NaN(我认为这很有意义)。
const { varCase, formCount } = this.state;
for (let i = 1; i <= formCount; i++) {
const intro = varCase.intro[i];
}
const obj = {
['diff' + i]: {intro: intro}
答案 0 :(得分:1)
知道密钥后,可以使用.
从对象获取值。当键为动态键时,可以使用[]
。示例varCase["intro"+i];
const { varCase, formCount } = this.state;
let finalObj = {}
for (let i = 1; i <= formCount; i++) {
finalObj["diff" + i] = {intro : varCase["intro"+i]}
}
console.log(finalObj);
在您给出的示例中,您正在for循环内创建intro
变量。无法在外部访问。
更新了答案并阅读了您的评论。您可以根据需要修改finalObj
答案 1 :(得分:0)
这项工作可以吗?
var intro = {}
for (let i = 1; i <= formCount; i++) {
if //your condition {
intro[i] = varCase.intro[i];
}
}
拨打您需要的简介:
intro['1']
答案 2 :(得分:0)
继@Bergi的评论之后,这将实现您想要的。我对您的prop对象的外观做了一些假设:
const { varCase, formCount } = {
varCase: {
intro: ["A", "B", "C"]
},
formCount: 3
}
const intro = {}
for (let i = 0; i < formCount; i++) {
const propName = `diff${i}`
Object.assign(intro, { [propName]: varCase.intro[i] });
}
console.log("INTRO: ", intro); // Outputs "INTRO: " Object { diff0:
// "A", diff1: "B", diff2: "C" }
但是我不确定您为什么要这样做!