js 实现两个字符串数字相加(大数相加)

1,858 阅读1分钟
function add(a, b) {
    // 小数前面补0
    const absLen = Math.abs(a.length - b.length)
    if (a.length > b.length) {
        b = Array(absLen).fill(0).join('') + b
    } else if (a.length < b.length) {
        a = Array(absLen).fill(0).join('') + a
    }
    
    const arrA = a.split('').reverse()
    const arrB = b.split('').reverse()
    let result = []
    let carry = 0 // 进位

    for (let i = 0; i < a.length; ++i) {
        let sum = parseInt(arrA[i]) + parseInt(arrB[i]) + carry
        result[i] = sum % 10
        carry = sum > 9 ? 1 : 0
    }
    if (carry === 1) {
        result[a.length] = 1
    }

    return result.reverse().join('')
}