Как посчитать среднее арифметическое для нескольких элементов массива по индексу?! Магия JS

среднее арифметическое на чистом js

Йо-йо! Совсем недавно на фирлансе увидел такую задачу:

Есть 5 чекбоксов. 
Каждый чекбокс прописан как массив из 5 цифр. 
Хочу чтобы при нажатии на чекбоксы возвращался (логом) массив из 5 цифр являющихся средним арифметическим массивов чекбоксов по индесам. 
Например если нажаты два чекбокса, 
содержащие [1,2,3,4,5] и [4,5,6,7,8] 
функция должна вернуть массив : [2.5, 3.5,4.5,5.5,6.5]

Плюс в заголовке было написано, что нужно написать функцию на чистом js. Ну, что же… Вызов принят)

HTML таких чекбоксов

Простые чекбоксы в блоке. Буду вешать на него слушатель нажатий.

JS. Хранение данных массивов

У каждого чексбокса я определил атрибут app-id. Я предусмотрел, что в объекте будут храниться массивы, а app-id будет служить идентификатором массива.

Таким образом первому чексбоксу у которого app-id=»a1″ будет назначен массив [1,2,3,4,5]. Соответственно так же и у других массивов. Далее я тоже буду хранить обрабатываемые данные в подобном объекте. Для удобства я создал переменную let concat = ‘a’; далее она понадобиться.

JS. Слушатель событий

Определяем наш блок по которому будем кликать и проверяем, что кликнули именно по чекбоксу. Далее получаем только выделенные чекбоксы.

JS. Собираем данные для обработки

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

Нам осталось посчитать среднеарифметическое и распечатать массив со значением в массив.

JS. Как найти среднее арифметическое

У нас есть массив со значениями и нам нужно найти среднеарифметическое. Среднеарифметическое для массива можно найти так:

JS. Находим среднее арифметическое для каждого индекса

В нашем случае это будет так.

Это был конечный этап. Вы можете посмотреть полный код и пример на codepen

See the Pen FL1 by xakplant (@xakplant) on CodePen.

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