JavaScript使用变量作为对象名称

106
我想使用变量的值来访问一个对象。 假设我有一个名为myobject的对象。 我想用这个名称填充一个变量,并使用该变量访问该对象。 示例:
var objname = 'myobject';
{objname}.value = 'value';
15个回答

0
如果您已经知道可能的变量名称列表,则尝试创建一个新对象(iconObj),其属性名称与对象名称相同。在下面的示例中,iconLib变量将保存两个字符串值,即“ZondIcons”或“MaterialIcons”。propertyName是ZondIcons或MaterialsIcon对象的属性。
   const iconObj = {
    ZondIcons,
    MaterialIcons,
  }
  const objValue = iconObj[iconLib][propertyName]

0

您可以通过以下方式设置对象的属性:

var obj = {};
obj.whateverVarName = 'yourVal';
console.log(obj);


0

我在回答中遇到的一个挑战是它假定对象只有一个层级。例如,

const testObj = { testKey: 'testValue' }
const refString = 'testKey';
const refObj = testObj[refString];

运行良好,但是

const testObj = { testKey:
                  { level2Key: 'level2Value' }
                }
const refString = 'testKey.level2Key';
const refObj = testObj[refString];

不起作用。

我最终做的是构建一个访问多级对象的函数:

objVar(str) {
    let obj = this;
    const parts = str.split('.');
    for (let p of parts) {
        obj = obj[p];
    }
    return obj;
}

在第二种情况下,我可以将字符串传递给此函数,以获取我要查找的对象:
const testObj = { testKey:
                  { level2Key: 'level2Value' }
                }
const refString = 'testObj.testKey.level2Key';
const refObj = objVar[refString];

-1

在使用window[objname]时,请确保objname是全局变量。 否则,有时会工作,有时会失败。 window[objname].value。


-2
var micro=[{'test':'hello'}];

var device = 'test';

console.log(micro[device]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接