Javascript 如何在较大的函数中访问两个嵌套的.forEach的结果

Javascript 如何在较大的函数中访问两个嵌套的.forEach的结果,javascript,jquery,foreach,Javascript,Jquery,Foreach,钢笔在这里: 我有一个getJSON,其中我正在处理返回的数据,并使用2构建应该发送到HTML的内容 我想提取每个.forEach的结果,将它们连接起来,并将它们附加到一个ID。但是函数的外部区域无法访问这些变量,我不知道该怎么做 $(document).ready(function () { $.getJSON("https://api3.libcal.com/api_hours_grid.php?iid=000&format=json&weeks=1&systemT

钢笔在这里:

我有一个getJSON,其中我正在处理返回的数据,并使用2
构建应该发送到HTML的内容

我想提取每个
.forEach
的结果,将它们连接起来,并将它们附加到一个ID。但是函数的外部区域无法访问这些变量,我不知道该怎么做

$(document).ready(function () {

$.getJSON("https://api3.libcal.com/api_hours_grid.php?iid=000&format=json&weeks=1&systemTime=0&callback=?", function (json) {

    var day0 = (json.locations[0].weeks[0].Sunday);
    var day1 = (json.locations[0].weeks[0].Monday);
    var day2 = (json.locations[0].weeks[0].Tuesday);
    var day3 = (json.locations[0].weeks[0].Wednesday);
    var day4 = (json.locations[0].weeks[0].Thursday);
    var day5 = (json.locations[0].weeks[0].Friday);
    var day6 = (json.locations[0].weeks[0].Saturday);

    var days = [day0, day1, day2, day3, day4, day5];
    var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];


    dayNames.forEach(function (foo) {
        var someContent = "<li id='" + foo + '-hours'+"'><span class='day-of-week'>" + foo + ", "


    });

    days.forEach(function (element) {

        var dayDate = element.date
        var dayDay = element.rendered

        if (dayDate[5] === '0') {
            dayDate = dayDate.substr(6)
        } else {
            dayDate = dayDate.substr(5)
        }

        var moreContent = "" +  dayDate + ":</span> " + "<span class='dates'>" + dayDay + "</li>"

    });


    var forHTML = someContent + moreContent;


    $('#this-weeks-hours').append(forHTML);


});});
$(文档).ready(函数(){
$.getJSON(“https://api3.libcal.com/api_hours_grid.php?iid=000&format=json&weeks=1&systemTime=0&callback=?,函数(json){
var day0=(json.locations[0].weeks[0].Sunday);
var day1=(json.locations[0].weeks[0].Monday);
var day2=(json.locations[0]。weeks[0]。周二);
var day3=(json.locations[0].weeks[0].周三);
var day4=(json.locations[0]。weeks[0]。星期四);
var day5=(json.locations[0].weeks[0].Friday);
var day6=(json.locations[0].weeks[0].Saturday);
变量天数=[day0,day1,day2,day3,day4,day5];
var dayNames=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
dayNames.forEach(函数(foo){
var someContent=“
  • “+foo+”,” }); days.forEach(函数(元素){ var dayDate=element.date var dayDay=element.rendered 如果(dayDate[5]=“0”){ dayDate=dayDate.substr(6) }否则{ dayDate=dayDate.substr(5) } var moreContent=“+dayDate+”:“+”“+dayDay+”
  • ” }); var forHTML=someContent+moreContent; $(“#本周小时”).append(forHTML); });});
    不能100%确定这是否是您的目标,但只需声明&init与渲染调用在同一范围内的变量即可。我修改了你的代码

    $(document).ready(function () {
    
        $.getJSON("https://api3.libcal.com/api_hours_grid.php?iid=587&format=json&weeks=1&systemTime=0&callback=?", function (json) {
    
            //content variables declared here
            ///////////////////////////////////////////
            var someContent = '';
            var moreContent = '';
            ///////////////////////////////////////////
    
    
            var day0 = (json.locations[0].weeks[0].Sunday);
            var day1 = (json.locations[0].weeks[0].Monday);
            var day2 = (json.locations[0].weeks[0].Tuesday);
            var day3 = (json.locations[0].weeks[0].Wednesday);
            var day4 = (json.locations[0].weeks[0].Thursday);
            var day5 = (json.locations[0].weeks[0].Friday);
            var day6 = (json.locations[0].weeks[0].Saturday);
    
            var days = [day0, day1, day2, day3, day4, day5];
            var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    
    
            dayNames.forEach(function (foo) {
                someContent += "<li id='" + foo + '-hours'+"'><span class='day-of-week'>" + foo + ", "
    
    
            });
    
            days.forEach(function (element) {
    
                var dayDate = element.date
                var dayDay = element.rendered
    
                if (dayDate[5] === '0') {
                    dayDate = dayDate.substr(6)
                } else {
                    dayDate = dayDate.substr(5)
                }
    
                moreContent += "" +  dayDate + ":</span> " + "<span class='dates'>" + dayDay + "</li>"
    
            });
    
    
            var forHTML = someContent + moreContent;
            $('#this-weeks-hours').append(forHTML);
    
    
        });
    
    });
    
    $(文档).ready(函数(){
    $.getJSON(“https://api3.libcal.com/api_hours_grid.php?iid=587&format=json&weeks=1&systemTime=0&callback=?,函数(json){
    //此处声明的内容变量
    ///////////////////////////////////////////
    var someContent='';
    var moreContent=“”;
    ///////////////////////////////////////////
    var day0=(json.locations[0].weeks[0].Sunday);
    var day1=(json.locations[0].weeks[0].Monday);
    var day2=(json.locations[0]。weeks[0]。周二);
    var day3=(json.locations[0].weeks[0].周三);
    var day4=(json.locations[0]。weeks[0]。星期四);
    var day5=(json.locations[0].weeks[0].Friday);
    var day6=(json.locations[0].weeks[0].Saturday);
    变量天数=[day0,day1,day2,day3,day4,day5];
    var dayNames=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
    dayNames.forEach(函数(foo){
    someContent+=“
  • “+foo+”,” }); days.forEach(函数(元素){ var dayDate=element.date var dayDay=element.rendered 如果(dayDate[5]=“0”){ dayDate=dayDate.substr(6) }否则{ dayDate=dayDate.substr(5) } moreContent+=“+dayDate+”:“+”“+dayDay+”
  • ” }); var forHTML=someContent+moreContent; $(“#本周小时”).append(forHTML); }); });
    不能100%确定这是否是您的目标,但只需声明&init与渲染调用在同一范围内的变量即可。我修改了你的代码

    $(document).ready(function () {
    
        $.getJSON("https://api3.libcal.com/api_hours_grid.php?iid=587&format=json&weeks=1&systemTime=0&callback=?", function (json) {
    
            //content variables declared here
            ///////////////////////////////////////////
            var someContent = '';
            var moreContent = '';
            ///////////////////////////////////////////
    
    
            var day0 = (json.locations[0].weeks[0].Sunday);
            var day1 = (json.locations[0].weeks[0].Monday);
            var day2 = (json.locations[0].weeks[0].Tuesday);
            var day3 = (json.locations[0].weeks[0].Wednesday);
            var day4 = (json.locations[0].weeks[0].Thursday);
            var day5 = (json.locations[0].weeks[0].Friday);
            var day6 = (json.locations[0].weeks[0].Saturday);
    
            var days = [day0, day1, day2, day3, day4, day5];
            var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    
    
            dayNames.forEach(function (foo) {
                someContent += "<li id='" + foo + '-hours'+"'><span class='day-of-week'>" + foo + ", "
    
    
            });
    
            days.forEach(function (element) {
    
                var dayDate = element.date
                var dayDay = element.rendered
    
                if (dayDate[5] === '0') {
                    dayDate = dayDate.substr(6)
                } else {
                    dayDate = dayDate.substr(5)
                }
    
                moreContent += "" +  dayDate + ":</span> " + "<span class='dates'>" + dayDay + "</li>"
    
            });
    
    
            var forHTML = someContent + moreContent;
            $('#this-weeks-hours').append(forHTML);
    
    
        });
    
    });
    
    $(文档).ready(函数(){
    $.getJSON(“https://api3.libcal.com/api_hours_grid.php?iid=587&format=json&weeks=1&systemTime=0&callback=?,函数(json){
    //此处声明的内容变量
    ///////////////////////////////////////////
    var someContent='';
    var moreContent=“”;
    ///////////////////////////////////////////
    var day0=(json.locations[0].weeks[0].Sunday);
    var day1=(json.locations[0].weeks[0].Monday);
    var day2=(json.locations[0]。weeks[0]。周二);
    var day3=(json.locations[0].weeks[0].周三);
    var day4=(json.locations[0]。weeks[0]。星期四);
    var day5=(json.locations[0].weeks[0].Friday);
    var day6=(json.locations[0].weeks[0].Saturday);
    变量天数=[day0,day1,day2,day3,day4,day5];
    var dayNames=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
    dayNames.forEach(函数(foo){
    someContent+=“
  • “+foo+”,” }); days.forEach(函数(元素){ var dayDate=element.date var dayDay=element.rendered 如果(dayDate[5]=“0”){ dayDate=dayDate.substr(6) }否则{ dayDate=dayDate.substr(5) } moreContent+=“+dayDate+”:“+”“+dayDay+”
  • ” }); var forHTML=someContent+moreContent; $(“#本周小时”).append(forHTML); }); });
    我知道这个问题已经有了答案,但由于您对自己的结果不太满意,也许下面的内容对您来说仍然很有趣

    假设
    jsn
    保存来自JSONP请求的响应,代码可以缩短为以下几行:

    var dates=Object.entries(jsn.locations[0].weeks[0]).map(function(val,key)
              {
                 return '<li>'+key+' '+val[0]+' '+val[1].date
                        +': '+val[1].rendered+'</li>';
              })
    $('#this-weeks-hours').append('<ul>'+dates.join('\n')+'</ul>');
    
    
    本周的开放时间
    
    我知道这个问题已经有了答案,但由于您对自己的结果不太满意,也许下面的内容对您来说仍然很有趣

    假设
    jsn
    保存来自JSONP请求的响应,代码可以缩短为以下几行:

    var dates=Object.entries(jsn.locations[0].weeks[0]).map(function(val,key)
              {
                 return '<li>'+key+' '+val[0]+' '+val[1].date
                        +': '+val[1].rendered+'</li>';
              })
    $('#this-weeks-hours').append('<ul>'+dates.join('\n')+'</ul>');
    
    
    本周的开放时间
    
    您可以使用
    reduce
    连接所有变量。有些人喜欢这样:

    days.reduce(function (out, element) {
    
        var dayDate = element.date
        var dayDay = element.rendered
    
        if (dayDate[5] === '0') {
            dayDate = dayDate.substr(6)
        } else {
            dayDate = dayDate.substr(5)
        }
    
        return out += "" +  dayDate + ":</span> " + "<span class='dates'>" + dayDay + "</li>"
    
    }, '');
    
    days.reduce(函数(out,元素){
    var dayDate=element.date
    var dayDay=element.rendered
    如果(日期[5]