12345678910111213141516171819202122232425262728
var addStrings = function(num1, num2) { num1 = num1.split("").map(it => +it) // 字符串转成数组 num2 = num2.split("").map(it => +it) // 字符串转成数组 var len1 = num1.length var len2 = num2.length var len = 1 + (len1 > len2 ? len1 : len2) // 结果数组的长度 var myArray = new Array(len).fill(0) // 向结果数组填充 0 var i = len1 - 1, j = len2 - 1, k = len - 1 while (k > 0) { num1i = num1[i] === undefined ? 0 : num1[i] // 任何一个数读不到值时,把值变为0 num2j = num2[j] === undefined ? 0 : num2[j] // 任何一个数读不到值时,把值变为0 var element = myArray[k] + num1i + num2j myArray[k] = element % 10 // 计算结果数组的个位数 myArray[k - 1] = (element - myArray[k]) / 10 // 计算结果数组的十位数 k-- j-- i-- } if (myArray[0] === 0) { // 如果结果数组没进位就删除 myArray.shift() } if (myArray.length === 0) { // 数组的长度为零就返回0 return "0" } return myArray.join("") // 把数组转成字符串返回};