每个循环更改变量

时间:2019-01-25 12:40:08

标签: javascript reactjs ecmascript-6

嗨,我有一个非常简单的问题。我需要在每个循环中从状态中获取新值。在第一个循环中,我需要绑定到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}

3 个答案:

答案 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" }

但是我不确定您为什么要这样做!