簡體   English   中英

JavaScript - 將總數添加到具有相同索引的數組中

[英]JavaScript - Adding the totals in Array with same index

我已經開始學習循環 arrays 並遇到障礙 - 確實嘗試過研究,但我認為我可能沒有正確描述......

我已經設法總計數組中的每一行。 我確實創建了另一個名為 total 的變量,但不確定我是否需要它...

我得到下面的 output ,它們似乎都占據索引 0 - 我想我在這里搞糊塗了:)

22
14
201

現在我想添加這些值。 - 任何指針都將受到歡迎。

 function addArray(arr) { let total = []; let totalNumber = 0; for (let i = 0; i < arr.length; i++) { totalNumber += arr[i]; } total.push(totalNumber); console.log(total[0]) return totalNumber; } addArray([17, 2, 3]) addArray([2, 8, 2, 2]) addArray([150, 50, 1])

我建議您不要使用三個單獨的 function 調用,而是使用一個,並通過一個二維數組(一個包含其他數組的數組):

addArrays([[17, 2, 3], [2, 8, 2, 2], [150, 50, 1]])

您現在可以創建兩個單獨的函數。 第一個 function 負責對嵌套數組中的數字求和(例如: [17, 2, 3]給出22 ),另一個用於循環遍歷要求和的每個數組,並將其添加到總數中。 您已經制作了第一個 function(盡管正如您所提到的,不需要存儲數組的total變量,因此可以針對這種方法將其刪除)

function sumArray(arr) {
  let totalNumber = 0;
  for (let i = 0; i < arr.length; i++) {
    totalNumber += arr[i];
  }
  return totalNumber;
}

下一步是創建第二個 function,它將遍歷 arrays 數組(因此數組中的每個元素都是數組本身):

 function sumArray(arr) { let totalNumber = 0; for (let i = 0; i < arr.length; i++) { totalNumber += arr[i]; } return totalNumber; } function addArrays(arrays) { let totalNumber = 0; for (let i = 0; i < arrays.length; i++) { let currentArray = arrays[i]; totalNumber += sumArray(currentArray); // sum the current array values, and add it to the total } return totalNumber; } console.log(addArrays([[17, 2, 3], [2, 8, 2, 2], [150, 50, 1]])); // 237

上面可以通過使用嵌套循環來編寫,但是使用函數來分解你的邏輯可以幫助清晰。 如果你使用閉包,你可以使用單獨的 function 調用(即:在你的 function 中創建一個總和並返回一個負責添加的 function)。 如果您是初學者,我建議您使用第一種方法,因為它更簡單:

 function createAdder() { let runningTotal = 0; return function(arr) { for (let i = 0; i < arr.length; i++) { runningTotal += arr[i]; } return runningTotal; } } const addArray = createAdder(); addArray([17, 2, 3]) addArray([2, 8, 2, 2]) console.log(addArray([150, 50, 1]));

最后,您可以使用數組方法,例如.reduce()使您的代碼更簡潔。 使用.reduce()在方法調用后面隱藏一個內部循環,它允許您將數組中的值“減少”為另一個/轉換后的值(在本例中為您的總和):

 function addArrays(arrays) { return arrays.reduce( (totalSum, arr) => totalSum + arr.reduce((arrSum, num) => arrSum + num, 0), 0); } console.log(addArrays([[17, 2, 3], [2, 8, 2, 2], [150, 50, 1]])); // 237

您的錯誤是您在function中創建了total ,因此在調用function並將結果推送到它的 0 索引時總是會重新創建它。 使固定:

 function addArray(arr) { let totalNumber = 0; for (let i = 0; i < arr.length; i++) { totalNumber += arr[i]; } return totalNumber; } let total = []; total.push(addArray([17, 2, 3])); total.push(addArray([2, 8, 2, 2])); total.push(addArray([150, 50, 1])); console.log(total);

暫無
暫無

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

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