Мне нужно рассчитать 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
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.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
[<>]
редактор фрагментов и создайте минимальный воспроизводимый пример