簡體   English   中英

有沒有更有效的方法來使用 JavaScript 中的 For 循環顯示兩個 arrays 的總和?

[英]Is there a more efficient way to display the sum of two arrays using For Loops in JavaScript?

我希望最終結果顯示“276 + 351 = 627”。 使用 for 循環時有更有效的方法嗎? 這是我在網上找到的一個練習題,所以2 arrays之后的東西就是我想出來的。

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}`);

reduce function 允許您以非常簡短的方式編寫它:

 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((sum, n) => sum + n), sum1 = add(arr_1), sum2 = add(arr_2), total = sum1 + sum2; console.log(`${sum1} + ${sum2} = ${total}`);

如果您閱讀 MDN Docs Link Here ,則有很多方法可以遍歷數組。 其中一種方法是reduce() ,它適用於幾乎所有瀏覽器,但我更喜歡使用forEach() ,因為它是 arrays 上最古老的原型之一。這是它的完成方式

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}`);

JSFiddle鏈接

這邊走

 const doSum = arr => arr.reduce((a,c)=>a+c,0) // let zero value, if arr is empty, 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), total = sum1 + sum2; console.log(`${sum1} + ${sum2} = ${total}`)

假設arr_1arr_2的長度相同,則只需要一個循環。 這與您將獲得的一樣有效(與速度/性能一樣):

let 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 (let i = 0; i < arr_1.length; i++) {
    sum1 += arr_1[i], sum2 += arr_2[i];
}

let total = sum1 + sum2;

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

普通for循環通常比更高級的循環函數更快,因此您已經擁有了性能最好的循環。

您也可以通過循環較大的一個,將其用於不同長度的 arrays,但仍然只執行一個for循環:

let 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 (let i = 0; i < arr_1.length; i++) {
    sum1 += arr_1[i], sum2 += arr_2[i] || 0;
}

let total = sum1 + sum2;

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

arr_2用完時,它將開始輸出undefined arr_2[i] || 0 在這種情況下, arr_2[i] || 0表達式將使用輔助值。

另一種方法是檢查偏移是否存在:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM