JS处理分数运算

482 阅读1分钟

加减法

function CalculateFraction(fractionList) {
    if (fractionList && fractionList.length > 0) {
    //分子
    let molecule = 0;
    //分母
    let denominator = 0;
    //分子集合
    let molecules = [];
    //分母集合
    let denominators = [];
    fractionList.forEach(item => {
        if (item.indexOf("/") > -1) {
        let i = item.indexOf("/");
        molecules.push(item.substring(0, i));
        denominators.push(item.substring(i + 1, item.length));
        }
    });
    //循环分母找出最小公倍数
    let pre = parseInt(denominators[0]);
    let multiple = pre;
    for (var j = 1; j < denominators.length; j++) {
        let n = parseInt(denominators[j]);
        multiple = pre > n ? pre : n;
        while (multiple <= pre * n) {
            if (multiple % pre == 0 && multiple % n == 0) {
                break;
            }
            multiple++;
        }
        pre = multiple;
    }
    denominator = multiple;
    //循环计算分子相加/相减
    for (var k = 0; k < molecules.length; k++) {
        //加法
        molecule += molecules[k] * (denominator / denominators[k]);
        //减法
        //molecule -= molecules[k] * (denominator / denominators[k]);
    };
    //结果判断 分子不能小于分母
    return molecule + "/" + denominator;
    // if (molecule < denominator) {
    // return false;
    // }
    // return true;
    }
}
//测试代码
var list = ['1/3', '1/4', '1/5','1/6'];
console.log(CalculateFraction(list));

执行结果: 57/60