1
var fractionAddition = function (expression) {2
const fractions = expression.split(/[+-]/).filter(Boolean);3
const operator = expression.split(/[0-9/]/).filter(Boolean);4
expression[0] !== "-" && operator.unshift("+");6
const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));7
const lcm = fractions.reduce((result, fraction) => {8
const denominator = fraction.split("/")[1];9
return (result * denominator) / gcd(result, denominator);12
const molecularSum = fractions.reduce((total, fraction, index) => {13
const [molecular, denominator] = fraction.split("/");14
const multiple = (lcm / denominator) * (operator[index] === "+" ? 1 : -1);15
return total + molecular * multiple;18
const resultGcd = gcd(Math.abs(molecularSum), lcm);19
return `${molecularSum / resultGcd}/${lcm / resultGcd}`;