Gtld aggregateAverage

Материал из GTL-wiki
Перейти к навигации Перейти к поиску

Краткое описание

Функция предназначена аггрегации массива данных. Функция возвращает массив с указанным количеством элементов. Данная функция используется для уменьшения количества элементов массива путем усреднения данных по группам.

Cодержание функции может дополняться!

Синтаксис

Стандартная конструкция выглядит таким образом:

let __aggr = aggregateAverage(array, M);

Аргументы

array - исходный массив данных;
M - длина целевого массива;


Содержание функции

function aggregateAverage(arr, M) {
	//Функция для уменьшения элементов исходного массива методом агрегации (среднее по группам)
	//arr - исходный массив данных
	//M - длина целевого массива данных
	const result = []; //массив для результата
	const N = arr.length; //длина исходного НЧ массива
	if (M <= 0 || N === 0) return []; //если целевой массив пустой, то возвращаем пустой
	if (M >= N) return arr.slice(); //если размер целевого >= исходного, то возвращаем копию исходного

	//Разбиваем массив на M групп с примерно равным количеством элементов
	for (let i = 0; i < M; i++) {
		const start = Math.floor(i * N / M); //стартовый индекс группы
		const end = Math.floor((i + 1) * N / M); //конечный индекс группы

		const group = arr.slice(start, end); //вырезаем группу
		const avg = group.reduce((a, b) => a + b, 0) / group.length; //считаем среднее в группе
		result.push(avg);
	}

	return result;
}