function splitNum(num, segment = 8) {
num = num.toLocaleString();
let res = [];
while (num.length >= segment) {
res.push(num.slice(-segment))
num = num.slice(0, num.length - segment)
}
if (num !== '') res.push(num)
return res;
}
function sum(num1, num2) {
num1 = num1.toString();
num2 = num2.toString();
if (num1.length < num2.length) {
let num = num1;
num1 = num2;
num2 = num;
}
let numArr1 = splitNum(num1);
let numArr2 = splitNum(num2);
let offset = 0;
let res = [];
numArr1.forEach((n1, i1) => {
n1 = Number(n1);
let n2 = numArr2[i1] === undefined ? 0 : Number(numArr2[i1]);
let stride = 0;
let str = (n1 + n2 + Number(offset)).toString();
if (str.length > n1.toString().length) {
stride = str.length - n1.toString().length;
offset = str.slice(0, stride);
str = str.slice(stride, str.length);
} else {
offset = 0;
}
res.push(str);
})
return res.reverse().join('');
}
a = [
'1111111111',
'2222222222',
'6666666666',
'7777777777'
].join('');
b = [
'11111111',
'9222222222',
'6666666666'
].join('');
let c = sum(a, b);
console.log(c)