对于循环,计算数组中平方数的总和

时间:2019-09-20 15:47:12

标签: javascript

我正在应对挑战,需要一些帮助: 编写一个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 );

3 个答案:

答案 0 :(得分:0)

您的数学是错误的。显而易见,变量从0开始,然后与每个数组元素相乘; 0等于0等于0,因此无论值是多少,它将始终为0。更不用说您的循环没有将数组的长度视为停止条件,而是应该将其作为停止条件,因为您要从数组的开始到结尾进行迭代。

您需要遍历数组的长度,对每个数组元素求平方,并对该变量求平方的 add

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

如果可以使用ES6,甚至可以使用高阶数组函数来简化此操作:

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

答案 1 :(得分: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)

答案 2 :(得分:0)

您可以采用多种方法来达到期望的结果,但是正如您已经提到的,您必须编写一个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

使用数组对象的forEach方法

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

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

// Sum is now 63

Oneliner

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

reduce方法使用accumulator存储临时结果,累加器作为第一个参数传递给回调,第二个参数是元素的值,您可以详细了解reduce方法here