Работа с зубчатым массивом в большинстве языков программирования может быть немного неуклюжей, но в JavaScript дело обстоит иначе, потому что мы легко получаем длину любой строки. Вам может быть интересно, что такое зубчатый массив, все в порядке, я полагаю, вы впервые слышите это.

Рваный массив, также известный как зазубренный массив, представляет собой массив массивов, члены которого могут иметь разные размеры и создавать ряды с зазубренными краями, когда визуализируется как выход. - Википедия

Чтобы дать четкое представление, давайте представим массив измерений, в котором учащиеся записали неравное количество измерений. Мы все еще можем вычислить правильное среднее значение для каждого ученика, не меняя программу.

var measurements = [[22, 10],[10, 13, 15, 14],[5, 27, 33]];
var total = 0;
var average = 0.0;
for (var row = 0; row < measurements.length; row++) {
    for (var col = 0; col < measurements[row].length; col++) {
   total += measurements[row][col];
}   
average = total / measurements[row].length;
console.log(`Student ${parseInt(row+1)} average is  ${average.toFixed(2)}`);
total = 0;
average = 0.0;
}

обратите внимание, что у первого учащегося только два измерения, у второго учащегося четыре измерения, а у третьего учащегося соответственно три измерения. Вот результат работы программы:

Надеюсь, вы сочтете это находчивым, не забудьте поделиться и аплодировать, я буду очень признателен, и вы также можете поздороваться в твиттере.