Как сделать вложенный цикл в jquery и event.push () - PullRequest
0 голосов
/ 29 октября 2018

Я новичок в jQuery и надеюсь, что кто-нибудь поможет мне с этим. У меня есть данные JSON, которые выглядят следующим образом

events: function(start, end, tz, callback) {
var events      = [];
var num_events  = [ 
    {"formId": 9,
        "fornCode": "PP40",
        "Model": [
            {"taxMonth": 0,
                "effectiveDate": "2018-10-09"
            },
            {
                "taxMonth": 3,
                "effectiveDate": "2018-11-10"
            },
            {
                "taxMonth": 10,
                "effectiveDate": "2018-12-19"
            }
        ]
    },{"formId": 18,
        "fornCode": "PP30",
        "Model": [
            {"taxMonth": 0,
                "effectiveDate": "2018-01-09"
            },
            {
                "taxMonth": 3,
                "effectiveDate": "2018-04-10"
            },
            {
                "taxMonth": 10,
                "effectiveDate": "2018-11-19"
            }
        ]
    }
];

Я пытаюсь зациклить все эти данные вот так

$.each (num_events, function (index, object) {
    formId      =   num_events[index].formId,
    fornCode   =   num_events[index].fornCode

    $.each (object, function (key, value) {
        if(key == "Model"){
            taxMonth                =   object[key].taxMonth,
            effectiveDate           =   object[key].effectiveDate
        }
    });
});

После этого я пытаюсь выдвинуть все события, подобные этому

events.push({
    "id"                        : formId,
    "fornCode"                  : fornCode,

    "taxMonth"                  : taxMonth,
    "effectiveDate"             : effectiveDate
});

callback(events);
},

но он показывает только "id and fornCode", но "taxMonthffectiveDate" не определен Так есть ли что-то, что я могу зациклить и вставить в события? хочу изменить вот так

{formId  : '9', fornCode  : 'PP40', taxMonth  : '0', effectiveDate  : '2018-10-09'},
{formId  : '9', fornCode  : 'PP40', taxMonth  : '3', effectiveDate  : '2018-11-10'},
{formId  : '9', fornCode  : 'PP40', taxMonth  : '10', effectiveDate  : '2018-12-19'},
{formId  : '18', fornCode  : 'PP30', taxMonth  : '0', effectiveDate  : '2018-01-09'},
{formId  : '18', fornCode  : 'PP30', taxMonth  : '3', effectiveDate  : '2018-04-10'},
{formId  : '18', fornCode  : 'PP30', taxMonth  : '10', effectiveDate  : '2018-11-19'}

// Я работаю с FullCalendar, поэтому мне нужно отправить все данные в событиях. Я не уверен, что это хороший способ для этого, если какие-либо предложения будут благодарны мне. Спасибо заранее. ^^

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы должны создать новые массивы из объекта Model. И не нужно использовать if(key == "Model"). Запустите фрагмент и посмотрите, как он работает.

var events      = [];
var num_events  = [ 
    {"formId": 9,
        "fornCode": "PP40",
        "Model": [
            {"taxMonth": 0,
                "effectiveDate": "2018-10-09"
            },
            {
                "taxMonth": 3,
                "effectiveDate": "2018-11-10"
            },
            {
                "taxMonth": 10,
                "effectiveDate": "2018-12-19"
            }
        ]
    },{"formId": 18,
        "fornCode": "PP30",
        "Model": [
            {"taxMonth": 0,
                "effectiveDate": "2018-01-09"
            },
            {
                "taxMonth": 3,
                "effectiveDate": "2018-04-10"
            },
            {
                "taxMonth": 10,
                "effectiveDate": "2018-11-19"
            }
        ]
    }
];

$.each (num_events, function (index, object) {
    formId      =   num_events[index].formId,
    fornCode   =   num_events[index].fornCode,
    fornShortTh   =   num_events[index].fornShortTh
    taxMonth = []
    effectiveDate = [];
    $.each (object.Model, function (key, value) {
        events.push({
            "id"                        : formId,
            "fornCode"                  : fornCode,
            "taxMonth"                  : taxMonth,
            "effectiveDate"             : effectiveDate,
            "taxMonth"                  : value.taxMonth,
            "effectiveDate"             : value.effectiveDate
        });
    });
});
console.log(events);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0 голосов
/ 29 октября 2018

Я не совсем понимаю, что вы хотите сделать, но, может быть, что-то в этом роде:

$.each (object, function (key, value) {
    if(key == "Model"){
        $.each(value, (i, e) => {
            events.push({
                "id" : formId,
                "fornCode" : fornCode,
                "taxMonth" : e.taxMonth,
                "effectiveDate" : e.effectiveDate
             });
        })
    }
});
...