Я только начинаю изучать 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();
1
asheri 8 Дек 2016 в 19:00

4 ответа

Лучший ответ

Поскольку OP находится на ранних этапах обучения использованию JavaScript, ниже я представлю прямой метод, основанный на внешней итерации. В то время как другой ответ представляет декларативный подход, для ОП важно сначала разобраться с основами.

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);
1
bhspencer 8 Дек 2016 в 16:13

Эта функция (синтаксис 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);
}
4
Alnitak 8 Дек 2016 в 16:13
  var sum = ['0','1','2','3','4','5']
                                    .reduce((a,b)=>(a+Math.sqrt(b)),0);

Для этого вы должны понять внутренний механизм метода reduce. в этом методе значение b всегда является элементом массива. где

в каждой итерации a = возвращаемое значение.

0
Mahi 8 Дек 2016 в 17:34
    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();

Это ты ищешь?

0
newBornDeveloper 8 Дек 2016 в 16:14