如何对 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
在 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