1

我刚刚开始学习 JavaScript,我必须完成一项任务:

使用局部变量创建函数,将数组 [0,1,2,3,4,5] 的每个元素转换为 sqrt 并将它们相加。

我知道如何做一个函数,然后我必须做一个循环 - 我在下一步和使用 Math.sqrt 时遇到问题......

function myFunction() {  
   var numbers = ['0','1', '2', '3', '4', '5'];
   var total = 1;

   for (var i = 1; i < numbers.length; i++) {
        var result = Math.sqrt(numbers[i++]) * +numbers[i];
        console.log(result);
   }
}

myFunction();
4

5 回答 5

4

这个(ES2015 语法)函数将对数字数组的平方根求和:

let sumRoots = array => array.map(Math.sqrt).reduce((a, b) => a + b, 0);

Array.prototype.map函数是将数组元素转换为(新)修改数组的标准方法,Array.prototype.reduce用于将结果数组折叠为其总和。

如果你不能处理 ES2015 语法,换个更好的浏览器,或者使用这个:

function sumRoots(array) {
    return array.map(Math.sqrt)
                .reduce(function(a, b) {
                    return a + b;
                }, 0);
}
于 2016-12-08T16:04:38.763 回答
1

由于 OP 处于学习如何使用 JavaScript 的早期阶段,我在下面提出了一种直接的基于外部迭代的方法。虽然另一个答案提出了一种声明性方法,但对于 OP 来说,首先掌握基础知识似乎很重要。

function sumSquareRoots(numbers) {  
   var total = 0;
   for (var i = 0; i < numbers.length; i++) {
        var sqrt = Math.sqrt(numbers[i]);
        total = total + sqrt;
   }
   return total;
}

var numbers = ['0','1', '2', '3', '4', '5'];
var result = sumSquareRoots(numbers);
console.log(result);
于 2016-12-08T16:03:55.770 回答
0
    function myFunction() {  
    var numbers = ['0','1', '2', '3', '4', '5'];
    var sum=0;
    for (var i = 0; i < numbers.length; i++) {
        sum += Math.sqrt(numbers[i]);
    }
    console.log(sum);
}

myFunction();

是你要找的吗?

于 2016-12-08T16:14:49.730 回答
0
  var sum = ['0','1','2','3','4','5']
                                    .reduce((a,b)=>(a+Math.sqrt(b)),0);

为此,您必须了解reduce方法的内部机制。在此方法中, 的值b始终是数组元素。在哪里

在每次迭代中 a =返回值。

于 2016-12-08T17:16:32.940 回答
0

我们可以简单地映射并乘以每个项目的自身。

let numbers = ['0','1', '2', '3', '4', '5'];
let storeMultipliedIndex = []
numbers.map(item => storeMultipliedIndex.push(item * item))
console.log(storeMultipliedIndex)
于 2020-04-07T20:16:30.453 回答