Computer >> Máy Tính >  >> Lập trình >> Javascript

Hàm tìm dạng đơn giản nhất của phân số tổng trong JavaScript

Chúng ta có một mảng các mảng như thế này -

const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];

Lưu ý rằng mặc dù mảng có thể có bất kỳ số phần tử nào, nhưng mỗi mảng con phải chứa hai số.

Hai số trong mỗi mảng con đại diện cho một phân số. Giống như phân số được đại diện bởi mảng con thứ nhất là 12/56, của mảng thứ hai là 3/45, v.v.

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy và tính tổng của các phân số được đại diện bởi tất cả các mảng con.

Chúng tôi được yêu cầu tính tổng ở dạng phân số (tức là không chuyển chúng thành số thập phân).

Và trả về tổng dưới dạng một mảng gồm hai phần tử đại diện cho phân số kết quả.

Do đó, hãy viết mã cho chức năng này -

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[ 1731, 140 ]