在JavaScript中是否有更有效的方法使用For循环显示两个数组的总和?

在JavaScript中是否有更有效的方法使用For循环显示两个数组的总和?,javascript,loops,for-loop,Javascript,Loops,For Loop,我希望最终结果显示“276+351=627”。在使用for循环时,是否有更有效的方法来执行此操作? 这是我在网上发现的一个练习问题,所以我想到了两个数组之后的内容 let arr_1 = [3, 5, 22, 5, 7, 2, 45, 75, 89, 21, 2]; let arr_2 = [9, 2, 42, 55, 71, 22, 4, 5, 90, 25, 26]; let sum1 = 0; let sum2 = 0; for (let i = 0; i < arr_

我希望最终结果显示“276+351=627”。在使用for循环时,是否有更有效的方法来执行此操作? 这是我在网上发现的一个练习问题,所以我想到了两个数组之后的内容

let arr_1 = [3, 5, 22, 5,  7,  2,  45, 75, 89, 21, 2];
let arr_2 = [9, 2, 42, 55, 71, 22, 4,  5,  90, 25, 26];

let sum1 = 0;
let sum2 = 0;

for (let i = 0; i < arr_1.length; i++) {
    sum1 += arr_1[i];
}
for (let j = 0; j < arr_2.length; j++) {
    sum2 += arr_2[j];
}

let total = sum1 + sum2;

console.log(`${sum1} + ${sum2} = ${total}`);
让arr_1=[3,5,22,5,7,2,45,75,89,21,2];
设arr_2=[9,2,42,55,71,22,4,5,90,25,26];
设sum1=0;
设sum2=0;
for(设i=0;i
该函数允许您以非常短的方式编写:

const arr_1=[3,5,22,5,7,2,45,75,89,21,2],
arr_2=[9,2,42,55,71,22,4,5,90,25,26],
add=arr=>arr.reduce((和,n)=>sum+n),
sum1=相加(arr_1),
sum2=相加(arr_2),
总计=sum1+sum2;

log(`${sum1}+${sum2}=${total}`)如果您阅读MDN文档,有很多方法可以在数组中循环。 其中一种方法是reduce(),它几乎适用于所有浏览器,但我更喜欢使用forEach(),因为它是最古老的proto-on阵列之一。。这是如何做到的

let arr_1 = [3, 5, 22, 5, 7, 2, 45, 75, 89, 21, 2];
let arr_2 = [9, 2, 42, 55, 71, 22, 4, 5, 90, 25, 26];

let sum1 = 0
let sum2 = 0
let total = 0

arr_1.forEach((el) => {
  sum1 += el
});
arr_2.forEach((el) => {
  sum2 += el
});
total = sum1 + sum2

console.log(`${sum1} + ${sum2} = ${total}`);

jshiddle

这样

const
doSum=arr=>arr.reduce((a,c)=>a+c,0)//如果arr为空,则设为零值
,arr_1=[3,5,22,5,7,2,45,75,89,21,2]
,arr_2=[9,2,42,55,71,22,4,5,90,25,26]
,sum1=doSum(arr_1)
,sum2=doSum(arr_2)
,总计=sum1+sum2
;

log(`${sum1}+${sum2}=${total}`)
假设
arr\u 1
arr\u 2
具有相同的长度,则只需要一个循环。这与您将获得的效率(速度/性能)一样:

设sum1=0,sum2=0,
arr_1=[3,5,22,5,7,2,45,75,89,21,2],
arr_2=[9,2,42,55,71,22,4,5,90,25,26];
for(设i=0;i
普通
for
循环通常比更高级的循环函数更快,因此您已经拥有了性能最好的循环

您还可以通过循环较大的数组来将其用于不同长度的数组,仍然只对
循环执行一个

设sum1=0,sum2=0,
arr_1=[3,5,22,5,7,2,45,75,89,21,2,6,40,4],
arr_2=[9,2,42,55,71,22,4,5,90,25,26];
for(设i=0;i
arr_2
用完时,它将开始输出
undefined
。在这种情况下,
arr_2[i]| | 0
表达式将使用次值

另一种方法是检查偏移是否存在:

for(设i=0;i
要回答您的问题,没有比这更有效的方法了。使用像
reduce
这样的数组方法可能看起来更整洁,但效率不会更高。