Я пробую свои силы в Javascript после изучения ряда других языков программирования.
* Редактировать * Я исправил проблему, мне просто пришлось использовать ключевое слово let в обоих внешних для циклов, которые использовали я как то же имя для переменной итератора.
У меня есть двумерный массив int с 29 строками, каждая из которых содержит массив длиной 744 (744 * 29 = 21576 чисел), и я хотел бы передать каждый массив или столбец в метод, которыйвыполняет математические выражения (то есть среднее значение всех значений, стандартное отклонение и т. д.) и записывает результаты в мою консоль.Когда я пытаюсь это сделать, цикл выводит только результаты вычисления чисел в 1-м массиве, и ни один из остальных.Возможно, я ошибаюсь, но у меня есть ощущение, что решение может быть связано с ожиданием результата и / или использованием асинхронного поведения, или с моим неправильным пониманием того, как обращаться с массивом как объектом.
Сначалаи прежде всего я написал весь свой активный код в методе fs.readFile, который считывает файл JSON, предоставляющий мне нужные данные.
fs.readFile('./doc.json', 'utf-8', (err, text) => {...
Полученные данные представляют собой массив объектов.Ниже приведена иерархия информации, найденной в массиве.Я использую triple for loop , чтобы получить доступ к нужным данным и заполнить мой 2D-массив.(Я знаю, что это далеко не самый эффективный способ сделать это, но я полагаю, что он, тем не менее, должен работать)массив чисел на консоль (следующий цикл находится за пределами предыдущего цикла)
for(i = 0; i < arr.length; i++){
console.log("array number " + (i + 1) + ": " + arr[i]);
}
Однако, когда я пытаюсь передать тот же массив в метод GetTotal (извлекает сумму всех чисел в массиве) и сохраните результат, программа выведет среднее значение первого массива чисел и сразу же завершится.
for(i = 0; i < arr.length; i++){
console.log("array number " + (i + 1) + ": " + arr[i]);
let tot = GetTotal(arr[i]);
console.log("\nTotal: " + tot);
}
function GetTotal(nums){
let sum = 0;
for(i = 0; i < nums.length; i++){
sum += nums[i];
}
return sum;
}
Не совсем уверен, как разместить фотографии здесь, я уверен, что это будет полезно для лучшей визуализации ситуации
Я инициализирую свой 2D-массив, используяСоздайте метод Create2DArray, затем заполните каждый новый массив нулями:
var arr= Create2DArray(numRows, numCols);
for(i = 0; i < arr.length; i++){
for(j = 0; j < arr[i].length; j++){
arr[i][j] = 0;
}
}
function Create2DArray(rows,cols){
let newArr = [];
for(i = 0; i < rows; i++){
newArr.push(new Array(cols));
}
return newArr;
}
Я хотел бы видеть результат выполнения вычислений метода для ВСЕХ массивов чисел, а не только для первого.
Спасибо за ваше время.