我正在尝试解决数组求和的问题:
//[1,2,3] + [1,2] should be [1,3,5]
如果数组大小相同,我可以解决这个问题,但是如何处理不同大小的数组呢?下面是我的代码:
function sumOfArrays(a, b) {
let result = new Array(Math.max(a.length, b.length));
let carry = 0;
for (let i = result.length - 1; i >= 0; i--) {
const elementA = a[i];
const elementB = b[i];
const additionResult = elementA + elementB + carry;
result[i] = (additionResult % 10);
carry = Math.floor(additionResult / 10);
}
}
我基本上是把空值放入结果数组中如果数组的大小不同
2条答案
按热度按时间afdcj2ne1#
如果两个数组长度相同,则可以添加比较。
如果不是,你可以从一开始就用
0
"填充"它,直到它们的长度相同。然后您的代码将按预期工作(在添加
return result
;))然而,由于数组的长度现在是相同的,我们可以使用
map()
并将(+
)添加到该索引上的另一个数组的当前值,从而大大简化代码:7qhs6swi2#
您可以为要添加的索引获取偏移量。