咖啡脚本一行,用于创建带有变量键的哈希图
Coffeescript one liner for creating hashmap with variable key
是否可以在咖啡脚本中的一行中执行以下操作?
obj = {}
obj[key] = value
我试过了:
obj = { "#{key}": value }
但它不起作用。
它已从语言中删除
对不起,迟到了——如果我没记错的话,那是因为有些 我们的其他语言功能取决于在 编译时。例如,方法重写和超级调用 可执行类体。我们想知道密钥的名称,以便 可以构造适当的超级调用。
此外,它使您必须在使用时关闭包装对象 作为表达式(常见情况),只要您有动态键。
最后,JavaScript 中动态键已经有一个很好的语法。 明确说明您正在做的事情:
obj[key] = value.
拥有
{key: value, key: value}
形式有一些好处 仅限于"纯"标识符作为键。
(obj = {})[key] = value
将编译为
var obj;
(obj = {})[key] = value;
这是正常的JavaScript。你从coffeescript得到的唯一好处是你不必预先声明var s
因为它为你做了。
对于将来发现此问题的任何人,从 CoffeeScript 1.9.1 开始,再次支持插值对象文字键!
语法如下所示:
myObject =
a: 1
"#{ 1 + 2 }": 3
请参阅 https://github.com/jashkenas/coffeescript/commit/76c076db555c9ac7c325c3b285cd74644a9bf0d2
根据键的复杂程度,您始终可以使用与键匹配的变量名称并使用它来定义对象,如下所示:
myKey = "Some Value"
obj = {myKey}
这将编译为:
var myKey, obj;
myKey = "Some Value";
obj = {
myKey: myKey
};
因此,您最终得到的与您所寻求的接近,但这需要您的键是有效的变量名称。
如果使用下划线,则可以使用 _.object
函数,该函数与_.pairs
函数相反。
_.pairs({a: 1, b: 'hello'})
//=> [['a', 1], ['b', 'hello']]
_.object([['a', 1], ['b', 'hello']])
//=> {a: 1, b: 'hello'}
因此,假设myKey = 'superkey'
和myValue = 100
您可以使用:
var obj = _.object([[myKey, myValue]]);
//=> obj = {superkey: 100}
相关文章:
- 根据发送到javascript中函数的参数创建变量名
- 基于循环创建变量
- 创建变量并将其动态命名为javascript
- 使用For each循环-jquery创建变量
- 如何使用html5和javascript创建变量步骤
- 从另一个函数创建变量到 JavaScript 数组
- 有没有办法在javascript或jquery中创建变量选择器
- 从 JavaScript 中的参数创建变量名称
- 如何在 Javascript 中从数组创建变量数组
- jquery创建变量并使用它来加载 - laravel
- 使用 Javascript 创建变量数组(动态,下拉)
- 创建变量后,对定义的变量是坏的/好的/可选的
- HTML5 Web 存储创建变量
- 如何在 for 循环中创建变量
- 在 JQuery/Javascript 中设置和使用动态创建变量的属性
- 在 JavaScript 循环中创建变量
- 从 javascript 中的另一个变量名称创建变量键
- JavaScript 创建变量并使用循环为它们赋值
- 正确的格式结构创建变量
- JavaScript-如何使用递归创建变量嵌套循环