如何对 javascript 中的值进行平方和求和

How to square the value and sum together in javascript

在 Javascript 中,我有一个场景可以实现以下内容:

让我们在下面列出一个整数列表,取该列表中的每个整数并将值加倍,然后对加倍后的值进行平方,然后作为输出,将所有平方值相加。例如:

doubleandSquareandSum[1] // 4 
doubleandSquareandSum[1, 2] // 20 
doubleandSquareandSum[1, 2, 3] // 56 
doubleandSquareandSum[1, 2, 3, 4] // 120

尝试过的 JS 代码:

function doubleandSquareandSum(arr) {

    ret= [];

    for (var i = 0, len = arr.length; i < len; i++) {
        ret.push(arr[i] * arr[i]);
    }

    return ret;     
}

我知道 Math.sqrt,但不确定如何在此处实施。 我已经尝试了上面的东西,但没有奏效。有人可以帮我吗?

我会 reduce,将每个加倍项的平方添加到累加器:

const doubleandSquareandSum = arr => arr.reduce((a, num) => a + ((2 * num) ** 2), 0);

console.log(doubleandSquareandSum([1])) // 4
console.log(doubleandSquareandSum([1, 2])) // 20
console.log(doubleandSquareandSum([1, 2, 3])) // 56
console.log(doubleandSquareandSum([1, 2, 3, 4])) // 120

无需再次将值压入数组,只需计算新值并将其添加到 sum 变量即可。

doubleandSquareandSum([1]) // 4 
doubleandSquareandSum([1, 2]) // 20 
doubleandSquareandSum([1, 2, 3]) // 56 
doubleandSquareandSum([1, 2, 3, 4]) // 120

function doubleandSquareandSum(arr) {

  var sum = 0;
  for (var i = 0, len = arr.length; i < len; i++) {
    sum += 4 * arr[i] * arr[i];
  }
  console.log(sum);
  return sum;
}

您可以采用函数式方法,通过使用单个小函数来构建中间结果和最终结果。

const
    twice = v => 2 * v,
    square = v => v * v,
    pipe = fn => v => fn.reduce((x, f) => f(x), v),
    twiceAndSquare = pipe([twice, square]),
    add = (a, b) => a + b,
    doubleandSquareandSum = array => array.map(twiceAndSquare).reduce(add);

console.log(doubleandSquareandSum([1]));          //   4 
console.log(doubleandSquareandSum([1, 2]));       //  20 
console.log(doubleandSquareandSum([1, 2, 3]));    //  56 
console.log(doubleandSquareandSum([1, 2, 3, 4])); // 120