首页 > 解决方案 > Javascript 使用变量作为属性名称来切换布尔值

问题描述

如何解决下面代码中的问题?

问题是我想在我的 GUI 中切换布尔值。我可以将“An”和“sta”保存在变量中。

var a={
  "An":{
    "sta":true,
    "stb":false
  },
  "Bn":{
    "sta":false,
    "stb":false
  },
};

var x="sta";
console.log(a.An.sta);//true
console.log(a.An.x);//undefined

如果我想将“An”中“sta”的布尔值从 true 更改为 false,那么我可以用这样的一行来做到这一点:

Object.defineProperty(arr.An, "sta", {value: false});

或者:

arr.An.sta=false;

然后我可以切换布尔值:

if(a.An.x==true){
a.An.sta=false;
}

如果我使用变量 x 执行此操作,我从 codepen 中的示例代码中得到的消息是“未定义”。

标签: javascript

解决方案


也许这对你有帮助?

var a={
  "An":{
    "sta":true,
    "stb":false
  },
  "Bn":{
    "sta":false,
    "stb":false
  },
};

var x=function(arg) {return arg;}
a.An.x=x("sta");
console.log(a.An.sta);//true
console.log(a.An.x);//sta

推荐阅读