Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Суммировать все элементы массива в цикле. (https://javascript.ru/forum/dom-window/56038-summirovat-vse-ehlementy-massiva-v-cikle.html)

Blondinka 26.05.2015 22:30

Суммировать все элементы массива в цикле.
 
Здравствуйте.
Есть функция. Она принимает, в качестве аргумента, массив любой длины и суммирует его.

<!DOCTYPE html>
<html>
<body>
<button onclick="sumArray()">Try it</button>
<p id="demo"></p>
<p id="result"></p>

<script>

var variablesArray = [];

function sum(arr){//Суммирует только первые 2 элемента массива.
    for(var i = 0, j = i+1; i < arr.length, j < arr.length; i++, j++){
	    var sum = arr[i]+arr[j];
	    return sum;
	}
}

/*function sum(arr){//Суммирует только первые 2 элемента массива.
    var k = 0;
    for(var i = 1; i < arr.length; i++){
	    k = arr[i]+arr[k];
	    return k;
	}
}*/

function sumArray() {
    for(var i = 0; i < 5; i++){
        variablesArray.push(Math.round(Math.random()* 10));//Заполнить массив.
    }

    document.getElementById("demo").innerHTML = variablesArray;
	document.getElementById("result").innerHTML = sum(variablesArray);
	
}

</script>

</body>
</html>


Но она не работает. Подскажите, пожалуйста, почему.

рони 26.05.2015 23:10

Blondinka,
return делают когда хотят получить результат - значит при при i == 0 вернуть sum

Blondinka 26.05.2015 23:14

рони,
но, если поставить return после цикла - получим NaN.

рони 26.05.2015 23:30

Цитата:

Сообщение от Blondinka
получим NaN

если коде будет логика и синтаксис -- будет сумма.
1. в начале сумма == 0 где это у вас в коде?
2.потом цикл
на каждом этапе цикла прибавляется arr[i] к сумме
3.потом return суммы

рони 26.05.2015 23:41

Blondinka,
строки 12 - 17 выкинуть забыть
строка 22 исправить
строка 23 перенести

Decode 27.05.2015 02:03

Blondinka, есть же reduce для этого :)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <button onclick="sumArray()">Try it</button>
  <p id="demo"></p>
  <p id="result"></p>
  
  <script>
    var variablesArray = [];

    function sum(arr) {
      return arr.reduce(function(prev, next) {
        return prev + next;
      });
    }

    function sumArray() {
      for(var i = 0; i < 5; i++){
        variablesArray.push( Math.round(Math.random()* 10));
      }

      document.getElementById("demo").innerHTML = variablesArray;
      document.getElementById("result").innerHTML = sum(variablesArray);

    }
  </script>
</body>
</html>

Blondinka 27.05.2015 13:24

Decode,
я попыталась использовать это в первую очередь. Но у меня ничего не заработало :cray: . Мне позор, а вам спасибо.


Часовой пояс GMT +3, время: 00:14.