Суммировать все элементы массива в цикле.
Здравствуйте.
Есть функция. Она принимает, в качестве аргумента, массив любой длины и суммирует его.
<!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, время: 15:55. |