我正试图想出这种格式的东西:
"hours":{
"<default>":{
"mon_open_close":[...],
"tue_open_close":[...],
"wed_open_close":[...],
"thu_open_close":[...],
"fri_open_close":[...],
"sat_open_close":[...],
"sun_open_close":[...],
}
}
我有一堆像这样定义的变量(一周中的每一天):
var wed_open_close_hours = [operationTime[2].timeFrom+'-'+operationTime[2].timeTill];
产生的结果如下:[10:00-16:00]
然后有这个数组:
$all_hours_text = ['mon_open_close', 'tues_open_close' ,'wed_open_close' , 'thu_open_close' , 'fri_open_close' , 'sat_open_close' ,'sun_open_close'];
我遇到的问题是如何将它们一起滚动并创建这个单个对象。有人能指出我正确的方向吗?
答案 0 :(得分:1)
所以如果你设置
var wed_open_close_hours = [operationTime[2].timeFrom+'-'+operationTime[2].timeTill];
在全球范围内,它也将以
的形式提供window.wed_open_close_hours;
如果你做了像eval这样的事情,那么它是可用的(&#34; wed_open_close_hours&#34;); 所以你可以做到
all_hours_text.map(function(varname) {
if(window[varname+"_hours"]) {
result["hours"]["<default>"][varname] = window[varname+"_hours"];
}
})
或
all_hours_text.map(function(varname) {
result["hours"]["<default>"][varname] = eval(varname+"_hours");
})
但是,建议不要在全局范围设置变量,也不要使用eval。你真的应该考虑将代码分解为:
var output = {}
output.hours = {}
output.hours["<default>"] = {}
.,..
output.hours["<default>"].wed_open_close = [operationTime[2].timeFrom+'-'+operationTime[2].timeTill];