抱着尝试一下的心态投了微信的前端简历,没想到还收到了面试邀请,仅以此文记录一下面试过程当中遇到的问题javascript
请你用 javascript 实现两个字符串数字相加(大数相加)?前端
分析:这道题考查两个超过js最大数值的数相加,可运用小学数学加法规律实现java
实现方法:面试
function add(a, b) {
// 看看两个字符串长度相差多少,小的在前面补0, 如 10000 和 1, 补0后为 10000 和 00001
let leng = Math.abs(a.length - b.length);
if (a.length > b.length) {
b = Array(leng).join('0') + '0' + b;
} else if (a.length < b.length) {
a = Array(leng).join('0') + '0' + a;
}
// 将字符串转化为数组而且倒装,如同小学加法从个位开始算起
let textArrA = a.split('').reverse(),
textArrB = b.split('').reverse(),
resultArr = [];
// 对数组进行循环
for (let i = 0; i < a.length; i++) {
// 求和,和小于10,则将和放进目标数组,若大于10,将除以10将余数放进目标数组,而后textArrA数组的下一位 + 1(textArrB数组也能够,选一个便可)
let sum = parseInt(textArrA[i]) + parseInt(textArrB[i]);
// 这里判断是不是最高位数值相加,即i === a.length - 1, 若是是不用取余直接放进去
if (parseInt(sum / 10) === 0 || i === a.length - 1) {
resultArr.push(sum);
} else {
resultArr.push(sum % 10);
textArrA[i + 1] = parseInt(textArrA[i + 1]) + 1;
}
}
// 最后将目标数组倒装一下,再转成字符串
return resultArr.reverse().join('');
}
console.log(add('1045747', '10')); // 1045757
复制代码
期待大家的答复!数组
个人博客即将同步至腾讯云+社区,邀请你们一同入驻:cloud.tencent.com/developer/s…缓存