查詢分數和 - 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 ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP