簡體   English   中英

計算數組中平方數之和的 For 循環

[英]For Loop that calculates sum of squred numbers in array

我正在應對一個挑戰,需要一些幫助:編寫一個 for 循環,計算數字數組中項目的平方和。 示例:對於數組 [ 1, 2, 3, 4 ],它計算平方和為 30(即 1 + 4 + 9 + 16)。 如果有人想仔細看看,我有一個小提琴。 謝謝你的幫助!

https://jsfiddle.net/jamie_shearman/2drt56e3/23/

var aFewNumbers = [ 1, 2, 3, 7 ];

var squareOfAFewNumbers = 0;

for( var i = 0; i <= aFewNumbers; i++ ) {
    squareOfAFewNumbers = squareOfAFewNumbers * aFewNumbers[i] ;
  }

console.log( squareOfAFewNumbers );

你的數學是錯誤的。 一個明顯的問題是,變量從 0 開始,然后乘以每個數組元素; 0乘以任何東西都是0,因此無論值是什么,它都將始終保持為0。 更不用說您的循環沒有將數組的長度視為停止條件,它應該是,因為您想從數組的開頭迭代到結尾。

您需要遍歷數組的長度,對每個數組元素進行平方,然后將該平方添加到變量中:

for( var i = 0; i < aFewNumbers.length; i++ ) {
    squareOfAFewNumbers += aFewNumbers[i] * aFewNumbers[i];
}

如果你可以使用 ES6,你甚至可以使用高階數組函數來進一步簡化:

var squareOfAFewNumbers = aFewNumbers.reduce((result, entry) => result + entry * entry, 0);

您可以使用 JavaScript pow()方法創建平方並將其與sumSquareOfAFewNumbers

 var aFewNumbers = [ 1, 2, 3, 7 ]; var sumSquareOfAFewNumbers = 0; aFewNumbers.forEach(function(element) { sumSquareOfAFewNumbers += Math.pow(element, 2); }); console.log(sumSquareOfAFewNumbers)

您可以采用多種方法來達到所需的結果,但正如您所提到的,您必須編寫一個for循環; 因此,我考慮到這一點,對答案進行了排序。

使用 for 循環

let numbers = [1, 2, 3, 7],
    sum = 0;

for(let i = 0; i < numbers.length; i++) {
    sum += Math.pow(numbers[i], 2)
}

// Sum is now 63

使用數組 object 的 forEach 方法

let numbers = [1, 2, 3, 7],
    sum = 0;

numbers.forEach(number => sum += Math.pow(number, 2))

// Sum is now 63

單線

let sum = [1, 2, 3, 7].reduce((a, c) => a + Math.pow(c, 2))

reduce 方法使用accumulator來存儲臨時結果,累加器作為第一個參數傳遞給回調,第二個參數是元素的值,您可以在此處閱讀有關reduce方法的更多信息。

暫無
暫無

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

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