如何基于字符串操作对象

时间:2013-04-08 21:01:33

标签: javascript string object

JS noob在这里。如果我有一个字符串,我如何从与字符串同名的对象中调用属性?

var carrot = {
    'vitaminA': 150,
    'vitaminC': 100
};

var cucumber = {
    'vitaminA': 10,
    'vitaminC': 12

};

var vegetable = 'cucumber'
alert(vegetable.vitaminC) // this doesn't work 

注意:这是我正在处理的问题的简化版本,因此我不能简单地说警告(cucumber.vitaminC) - 我必须根据字符串操作对象

3 个答案:

答案 0 :(得分:3)

你可以这样:

window[vegetable].vitaminC

但我强烈建议将这些人包含在一个不是全局对象的对象中window

var vegetables = {
  cucumber : {
    vitaminA: 10,
    vitaminC: 12
  },
  carrot : {
    vitaminA: 150,
    vitaminC: 100
  }
};

var vegetable = 'cucumber';
alert(vegetables[vegetable].vitaminC);

答案 1 :(得分:2)

如果您知道范围,则可以执行此操作。如果范围是全局的,您可以像这样访问它:

var vegetable = window['cucumber'];
alert(vegetable.vitaminC);

答案 2 :(得分:0)

我会稍微改变你的结构,使你的对象脱离全局范围。您只需添加一个新对象来包含蔬菜即可实现此目的:

var vegetables = {
    carrot: {
        'vitaminA': 150,
        'vitaminC': 100
    },
    cucumber: {
        'vitaminA': 10,
        'vitaminC': 12
    }
};

然后您可以使用[]表示法按名称(使用字符串)访问您的媒体资源:

vegetables['cucumber'].vitaminC; // 12

或者

vegetables['cucumber']['vitaminC']; // 12