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

Tìm Tổng của các phân số - 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 đúng hai số.

Hai số trong mỗi mảng con đại diện cho một phân số. Ví dụ:phân số được đại diện bởi mảng con đầu tiên 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 nhận trong một mảng như vậy và tính tổng các phân số được biểu thị bởi tất cả các mảng con. 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). 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ả.

Ví dụ

Sau đây là mã -

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

Đầu ra

Sau đây là đầu ra trong bảng điều khiển -

[ 1731, 140 ]