Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

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

Chúng ta có một mảng các mảng như sau:

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

Lưu ý trong khi mảng có thể có bất kỳ số lượng phần tử nào, mỗi mảng con phải chứa chính xác hai số.

Hai số trong mỗi mảng con đại diện cho một phân số. Như phân số được biểu diễn bởi mảng con đầu tiên là 12/56, bởi mảng con thứ hai là 3/45, v.v.

Chúng ta cần viết một hàm JavaScript nhận vào một mảng như vậy và tính tổng của các phân số được biểu diễn bởi tất cả các mảng con.

Chúng ta cần tính tổng dưới dạng phân số (tức là, không chuyển đổi chúng sang thập phân).

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

Do đó, hãy viết mã cho hàm này:

Ví dụ

Mã thực hiện như sau:

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

Kết quả trong console sẽ là:

[ 1731, 140 ]