Суммировать все элементы массива в цикле.
Здравствуйте.
Есть функция. Она принимает, в качестве аргумента, массив любой длины и суммирует его. <!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> Но она не работает. Подскажите, пожалуйста, почему. |
Blondinka,
return делают когда хотят получить результат - значит при при i == 0 вернуть sum |
рони,
но, если поставить return после цикла - получим NaN. |
Цитата:
1. в начале сумма == 0 где это у вас в коде? 2.потом цикл на каждом этапе цикла прибавляется arr[i] к сумме 3.потом return суммы |
Blondinka,
строки 12 - 17 выкинуть забыть строка 22 исправить строка 23 перенести |
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> |
Decode,
я попыталась использовать это в первую очередь. Но у меня ничего не заработало :cray: . Мне позор, а вам спасибо. |
Часовой пояс GMT +3, время: 00:14. |