[英]Is there a more javascript way to handle zipping two arrays instead of using a for loop?
[英]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_1
和arr_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.