求分数之和 - JavaScript
javascriptweb developmentfront end technologyobject oriented programming更新于 2025/12/7 6:04:17
我们有一个像这样的数组数组 −
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 ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

