![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Function that finds the simplest form of summed fractions in JavaScript
We have an array of arrays like this −
const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];
Note that while the array can have any number of elements, each subarray should strictly contain two numbers.
The two numbers in each subarray represents a fraction. Like the fraction represented by the first subarray is 12/56, by the second is 3/45 and so on.
We are required to write a JavaScript function that takes in one such array and calculates the sum of fractions represented by all the subarrays.
We are required to calculate the sum in fraction form (i.e., without converting them to decimals).
And return the sum as an array of two elements representing the resulting fraction.
Therefore, let’s write the code for this function −
Example
The code for this will be −
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));
Output
The output in the console will be −
[ 1731, 140 ]
Advertisements