在 JavaScript 中寻找分数组合的最简单形式的函数
我们有一个这样的数组 −
const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];
请注意,虽然数组可以有任何数量的元素,但每个子数组应该严格包含两个数字。
每个子数组中的两个数字表示一个分数。比如第一个子数组表示的分数是 12/56,第二个是 3/45,依此类推。
我们需要编写一个 JavaScript 函数,它接受这样一个数组,并计算由所有子数组表示的分数的总和。
我们需要计算分数形式的总和(即,不将它们转换为小数)。
并将总和作为表示结果分数的两个元素的数组返回。
因此,让我们为这个函数编写代码 −
示例
代码如下 −
const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]]; const gcd = (a, b) => { let num = 2, res = 1; while(num >= Math.min(a, b)){ if(a % num === 0 && b % num === 0){ res = num; }; num++; }; return res; } const sumFrac = (a, b) => { const aDenom = a[1], aNumer = a[0]; const bDenom = b[1], bNumer = b[0]; let resDenom = aDenom * bDenom; let resNumer = (aDenom*bNumer) + (bDenom*aNumer); const greatestDivisor = gcd(resDenom, resNumer); return [resNumer/greatestDivisor, resDenom/greatestDivisor]; }; const sumArrayOfFractions = arr => { return arr.reduce((acc, val) => sumFrac(acc, val)); }; console.log(sumArrayOfFractions(arr));
输出
控制台中的输出为 −
[ 1731, 140 ]
广告