查找分数和 - 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));
};

输出

以下是控制台中的输出 −

[ 1731, 140 ]

更新于: 16-Sep-2020

598 次浏览

启动您的事业

完成课程以获得认证

入门
广告