Я продолжаю получать (Не могу прочитать свойство 'Дата' из неопределенного) - PullRequest
0 голосов
/ 04 мая 2020

Моя цель состоит в том, чтобы перемещаться назад по массиву данных, проверяя, что пока дата / месяц, например, «02», остается неизменной, я буду использовать только первый случай (например, data.Cases: 1234), который я получу для в этом месяце.

Здесь я заявляю (i) , чтобы сохранить максимальную длину массива. дел и дата для переноса максимального числа дел и значения месяца в позиции i .

    let data = 'https://api.covid19api.com/total/country/south-africa/status/confirmed?from=2020-03-01T00:00:00Z&to=2020-04-01T00:00:00Z';

    let i = (data.length -1);
    let cases = data[i].Cases; // Total sum
    let date = (data[i].Date).slice(6,7);
    let getCase = [];
    let getDate = [];
    let theMonths = [];

    do {
        // Check if the date matches first date.
        // Push that date to getDate array.
        // Push that case to getCase array.
        // Continue loop

        if (date === (data[i].Date).slice(6,7)) {
            i--;
        }

Тогда этот оператор должен срабатывать, когда значение месяца изменяется и изменяет переменную даты, которую l oop использовал изначально, на новую, которая вызвала этот оператор. Поэтому я могу добавить в свой массив sh новые значения и повторить все l oop со следующим значением даты.

            // If the date has changed
        if (date !== (data[i].Date).slice(6,7)) {
            // Change to current Date

            //ERROR HERE (Does not update date with new date)

            if (data[i].Date){
                date = (data[i].Date).slice(6,7);
                getDate.push(date);
                getCase.push(data[i].Cases);
            }
        }

        if (date === '1') {
            break;
        }

    }

    while (
        cases >= data[i].Cases
    );

1 Ответ

0 голосов
/ 04 мая 2020
getCasesPerMonth(data) {

    // Loop backwards through array, storing the first date in temp variable and case amount in array, compare next 
    // iteration date with prev variable, if true replace var with current date and proceed loop.
    // if false, push new case to array and prev date variable to array and procceed loop.

    let i = data.length -1;

    // This needs to be updated when the date changes
    let currentDate = data[i].Date.slice(6,7)

    let addDates = [currentDate];
    let addCases = [data[i].Cases];

    while(i > 0) {

        if ((data[i].Date).slice(6,7) !== currentDate) {

            addDates.push((data[i].Date).slice(6,7));
            addCases.push(data[i].Cases);

            currentDate = (data[i].Date).slice(6,7);
        }

        i--;

    }

    let orderedDates = [];
    let orderedCases = [];

    this.flipAndPush(addDates, orderedDates);
    this.flipAndPush(addCases, orderedCases);

    let writtenMonths = [];

    orderedDates.forEach((date) => {
        writtenMonths.push(this.findMonth(date));
    });

    this.setState({splitMonths: writtenMonths, splitCases: orderedCases});
}
...