注意各种反转
var multiply = function (a, b) {
var cn = a.length + b.length;
var product = new Array(cn).fill(0);
/****
* 两两相乘,并放进不同的格子里,如果里面有东西,则相加
* num1 = "123", num2 = "456"
* 0 * 0 , 0 * 1, 0 * 2
* 1 * 0 1* 1 1 * 2
* 2 *0 2 * 1 2* 2
* 位数A与位数B相乘,那么它们的值的个位应该放 A +B 的位置上
*/
a = a.split('').reverse()
b = b.split('').reverse()
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
//必须加1,考虑要进位,
var digit = i + j
product[digit] += Number(a[i]) * Number(b[j])
product[digit + 1] += Math.floor(product[digit] / 10);//处理进位
product[digit] %= 10
}
}
product.reverse()
while (product[0] == 0) {
product.shift();
}
//处理最前面的零
return product.join('') || '0'
}
console.log(multiply('123', '456'))