创建要发送到API的对象的问题

时间:2017-08-02 03:18:41

标签: javascript jquery arrays object

我正试图想出这种格式的东西:

"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'];

我遇到的问题是如何将它们一起滚动并创建这个单个对象。有人能指出我正确的方向吗?

1 个答案:

答案 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];