Мне нужно рассчитать мощность сигнала за последние 24 часа, я подключаюсь к API, чтобы получить мои данные, которые я сохраняю в массиве в PHP (также в MySql) и отправляю массив PHP в JavaScript.

В JavaScript я сортирую мой массив

Monday/Thuesday/Wednesday/Thursday/Friday/Saturday/Sunday 

Просьба посмотреть мой код сортировки после будних дней: данные = мой массив из PHP

function testfunction(data) {

    let {gateway1, gateway2, gateway3, gateway4} = data;

    let result = [
        [], //0 Sunday
        [], //1 Monday
        [], //2 Tuesday
        [], //3 Wednesday
        [], //4 Thursday
        [], //5 Friday
        []  //6 Saturday
    ];

    function sort(dataset, result) {
        dataset.forEach(row => {
            row.forEach(innerRow => {
               let currentDay = moment(innerRow[11], 'YYYY-MM-DD HH:mm:ss');
               result[currentDay.day()].push(innerRow);
            })
        });
        return result;
    }

    let resultGW1 = sort(gateway1, result);
    let resultGW2 = sort(gateway2, result);
    let resultGW3 = sort(gateway3, result);
    let resultGW4 = sort(gateway4, result);

После сортировки данных по рабочим дням я пытаюсь в качестве примера прочитать данные понедельника за последние 24 строки

    //resultGWX[DAY][ROW][COLUMN]
    var i = 0;
    while(i<24){
        var z = console.log(resultGW1[1][i][1]);
        i++;
    }
    var t = parseInt(z);

    // Console.log(t) = result is number

    console.log(t/24);
}

Когда я console.log могу получить следующую информацию (сообщение) на моей консоли браузера: (24) -61 я думаю, что он читает 24 строки, но выводит только последнюю мощность сигнала и не суммирует последние 24 строки и делит 24

-2
proSkill06s

1 ответ

Ваша проблема здесь:

var z = console.log(resultGW1[1][i][1]);

Неважно, что такое resultGW1 [1] [i] [1] , потому что, хотя значение может отображаться в консоли, это не возвращаемое функцией значение console.log ( ) .

Независимо от того, что содержится в вашем вызове console.log () , возвращаемое значение равно undefined , что означает, что для z всегда будет установлено значение undefined по этой строке кода.

Это означает, что t даст значение NaN , потому что вы делаете parseInt () для undefined , и конечно, ваш t / 24 впоследствии тоже потерпит неудачу.

Чтобы это исправить, задайте для z значение resultGW1 [1] [i] [1] , вдали от любого вызова console.log () .

Вам также нужно добавить значение в z , а не просто устанавливать z , в противном случае z будет просто установлено на последнее значение.

Итак, ваша строка должна выглядеть так:

z += resultGW1[1][i][1];

Вы захотите иметь var z = 0; перед циклом, чтобы также инициализировать переменную `z.

58589292