Вот рекурсивная функция, использующая ECMAScript 6 Reduce. Это работает для большинства фракций, пока остаток не слишком мал. Значение 0 было переопределено, чтобы оно работало для таких массивов, как [1.2, 2.4, 12, 24]. Я тестировал в Chrome и IE Edge, поэтому он может вести себя по-другому в других браузерах или обновлениях. Так что он должен работать с массивом с плавающей точкой.
Array.prototype.gcd = function () {
if (this.length === 0)
return null;
return this.reduce((prev, curr) => {
if (curr <= 1.00000000001e-12)
return prev
else
return [curr, prev % curr].gcd();
});
}
var reducedValueGCD = [1.2, 2.4, 12, 24, 240].gcd();
Поиск MDN уменьшить или больше информации здесь .