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

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

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

Пожалуйста, посмотрите мою сортировку кода после будних дней: data = my Array from 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
noSkill06s 28 Окт 2019 в 13:29
Нажмите "Изменить", затем [<>] редактор фрагментов и создайте минимальный воспроизводимый пример
 – 
mplungjan
28 Окт 2019 в 13:31
"и не суммировал последние 24 строки" - как вы думаете, где именно вы суммируете что-либо в коде, который вы нам показали? нигде не вижу.
 – 
04FS
28 Окт 2019 в 13:34
Jep, это должно быть проблемой, как я могу суммировать? можешь привести пример я новичок
 – 
noSkill06s
28 Окт 2019 в 13:36
Я не вижу никакого суммирования? попробуйте использовать объект для хранения суммирования всех данных
 – 
Cyrus Zei
28 Окт 2019 в 13:36
«Как я могу суммировать?» — хорошо, инициализируя переменную со значением 0 перед циклом, а затем добавляя к ней отдельное значение каждого элемента, который вы выполняете в цикле, внутри цикла…?
 – 
04FS
28 Окт 2019 в 13:39

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.

0
Spudley 28 Окт 2019 в 13:41