js的数值是有上限的,但是如果我们需要超过上限的数来相加怎么办,这个题也是面试经常会考的一个题。
function add(a,b){
let arrA = (a+'').split(''),
arrB = (b+'').split(''),
res = '',
acc = 0
while(arrA.length || arrB.length || acc){
acc += ~~arrA.pop() + ~~arrB.pop()
res = (acc % 10) + res
acc = acc > 9
}
return res.replace(/^0+/,'')
}
思路: 1.将传入的两个数转为数组
2.把数组的最后一个值拿出来相加,并取整(~~)
3.把相加的结果的个位数拿出来附给res(由于res是字符串所以这个地方相加的结果也就是字符串)
4.判断acc是否大于9,如果大于9则说明需要进1,这里判断如果是true则在下次相加时acc就会是1,false则为0。
5.当数组的长度都清空且acc也是0的时候就停止循环。