我试图想出这种格式的东西:
"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'];
我遇到的问题是如何将它们组合在一起并创建这个单一对象。有人可以指出我正确的方向吗?
最佳答案
所以如果你设置
var wed_open_close_hours = [operationTime[2].timeFrom+'-'+operationTime[2].timeTill];
在全局范围内,它也将作为
window.wed_open_close_hours;
否则,如果您执行类似 eval("wed_open_close_hours") 的操作,它就可用; 所以你可以做
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];
关于javascript - 创建要发送到 API 的对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450883/