如何将变量值分配为散列中的变量名?

新手上路,请多包涵

我需要定义一个散列来使用 jQuery 发布一些 ajax 数据。散列看起来像:

 var setname = 'set_1';
elements = { set_1: {'beer','water','wine'} };

我需要解决的挑战是“set-1”(数组元素的键)应该根据 var setname 的值动态命名。

我想避免使用 eval() 当然..在 PHP 中可以使用双美元符号,如下所示: $$setname ,但是在 JavaScript 中执行此操作的方法是什么?

原文由 mikkelbreum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 224
2 个回答

你可以做你想做的事:

 var setname = 'set_1', elements = {};
elements[setname] = ['beer','water','wine'];
alert(elements['set_1']); // beer,water,wine

http://jsfiddle.net/x5KRD/ 上查看实际操作。

All objects in JS can be accessed using dot notation ( obj.method() or obj.property ), or bracket notation ( --- obj['method']() or obj['property'] ).使用括号表示法可以让您动态指定方法/属性/键名称。

例如,虽然笨拙,但 window['alert']('hi') 等同于 window.alert('hi')

请注意,无论如何,您的代码不会按原样工作,因为您正在使用对象文字表示法( {'beer','water','wine'} )来包含一个数组(它应该在方括号中 ['beer','water','wine'] ).对象文字需要有键值对。

原文由 Daniel Vandersluis 发布,翻译遵循 CC BY-SA 2.5 许可协议

var setname = 'set_1',
    elements = {};

elements[setname] = ['beer','water','wine'];

原文由 kanaka 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题