2017-04-13 99 views
1

我读过不少,但我无法弄清楚以下:如何在访问对象属性时避免使用eval?

var eventCity = [ 
    {date: 'Apr 11 2017', type: 'alpha'}, 
    {date: 'Apr 26 2017', type: 'beta'} 
]; 

var currentCity = 'eventCity'; // this is generated dynamically 

var aDate = eval(currentCity)[0].date; 

如何避免使用eval()保持相同的结果(aDate = 'Apr 11 2017')?

+0

“当前城市”可能有哪些其他值,以及它应该评估什么?为什么/它在哪里动态生成? – Bergi

+0

为什么不动态生成'var currentCity = eventCity;'并放下'eval'? – Bergi

+0

@Bergi我正在写一个Chrome扩展。在代码中有var'eventCity1',var'eventCity2',...等等。用户选择她希望看到的事件城市,并将该值传递给上面的代码。对于代码可读性,如果可能,我宁愿维护var'currentCity'。 – quackkkk

回答

1

为什么不使用对象并将动态值作为关键字?

var object = { 
     eventCity: [ 
      { date: 'Apr 11 2017', type: 'alpha' }, 
      { date: 'Apr 26 2017', type: 'beta' } 
     ] 
    }, 
    currentCity = 'eventCity', // this is generated dynamically 
    aDate = object[currentCity][0].date; 
+0

这正是我一直在寻找的!谢谢@nina:) – quackkkk

0

变种选项= []

选项[ 'eventCity'] = [ {日期: '2017年4月11日',类型: '阿尔法'}, {日期: '2017年4月26日',键入:'beta'}];