使用变量属性名称建立和数组
Build up and array with variable property name
我的HTML看起来像这样:
<label data-plural="foos" data-id="1">Foo</label>
<label data-plural="bars" data-id="2">Bar</label>
我有这个代码:
var commands = new Array();
$('label.ptype').each(function(k,v) {
var category = $(v).data('plural');
var cmd = 'show ' + category;
var id = $(v).data('id');
commands.push({cmd : function() { window.alert(id + " " + category); exploreId(id, category); }});
});
console.log(commands);
我想在命令数组中拥有:
[
{ 'show foos': function() { window.alert('1 foos'); exploreId(1, 'foos'); },
{ 'show bars': function() { window.alert('2 bars'); exploreId(2, 'bars'); }
]
但我得到的是字面意思
[ { cmd: function() ... }, { cmd: function() ... } ]
那么构建所需阵列的好方法是什么呢?
在 ES5 中,你必须拆开对象结构:
var command = {};
command[cmd] = function() { window.alert(id + " " + category); exploreId(id, category); };
commands.push(command);
在 ES2015 中,您可以在对象初始值设定项中使用[ ]
表示法:
commands.push({ [cmd] : function() { window.alert(id + " " + category); exploreId(id, category); }});
Firefox、Chrome和Safari支持该新功能("计算属性名称"),但Internet Explorer不支持。(它可能在 Edge 中,但我找不到任何明确的东西,我懒得启动我的 VM :)
为简单起见、可读性和执行速度,请使用 []
而不是 new Array();
。
你可以使用temporary object
,将其推送到命令中(Works on Chrome, Firefox and IE
):
var commands = [];
$('label').each(function(k,v) {
var category = $(v).data('plural');
var id = $(v).data('id');
var temp = {};
temp['show ' + category] = function() { window.alert(id + " " + category); exploreId(id, category); };
commands.push(temp);
});
console.log(commands);
console.log(commands[0]['show foos']());//run function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label data-plural="foos" data-id="1">Foo</label>
<label data-plural="bars" data-id="2">Bar</label>
小提琴:https://jsfiddle.net/ghorg12110/h0ekmreu/
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 在Javascript中重新建立对象数组的索引(无拼接)
- 如何在两个不同数组中的项目之间建立链接
- 如何获取ajax响应数组的密钥以建立数据表的标头