【问题标题】:Dynamically construct keys via strings+variables [duplicate]通过字符串+变量动态构造键[重复]
【发布时间】:2017-07-02 08:49:29
【问题描述】:

我想通过字符串+变量动态构造键。

这是我希望它可以是这样的一个例子:

var object = {x:0,y:0};
for(i=0;i<5;i++){
    if(i === 0){
        object.p+i = true;
    }else{
        object.p+i = false;
    }
}

//result
object.p0 = true;
object.p1 = false;
object.p2 = false;
object.p3 = false;
object.p4 = false;

我有一个对象穿过一系列线,它使用键和值来跟踪开始移动到哪一组坐标,方法是基本上将所有要移动的线切换为 false,除了它当前正在移动的线到,但是当它到达它时,它会将其变为 false 并将下一个变为 true,因此它开始向它移动。我可以通过复制和粘贴代码并更改数字来做到这一点,但以上是我想要完成的,我尝试做一些寻找答案,但对我想要做的事情没有任何结论。

for(a=0;a<paths.length;a++){
    var p = paths[a]; 
    if(a===0 && e.p0){
        if(cc(e, p, 1)){e["p" + a] = false; e["p" + a + 1] = true;}
    }else if(e["p" + a]){
        moveObj1ToObj2Smooth(e, p, 2);
        if(cc(e, p, 1)){e["p" + a] = false; e["p" + a + 1] = true;}
    }
}

如果我可以通过字符串+变量动态构造键,这会容易得多,这样我就可以运行一个循环,而不必复制/粘贴/编辑 20 多次不同的时间。

感谢任何帮助,谢谢。

【问题讨论】:

  • 你觉得你在这里做什么e["p" + a]?!

标签: javascript arrays object key


【解决方案1】:

你可以这样完成。

var object = {x:0,y:0};
for(i=0;i<5;i++){
    object["p"+i] = (i === 0)
}

一旦你这样做了,你就可以读取属性

var a = object["p0"];

或如:

var a = object.p0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2019-10-23
    • 2012-10-06
    • 2014-12-02
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多