繁体   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