Суммирование массива чисел в javascript

1

Здесь я хочу получать данные от пользователей. Разделите и сохраните их в массиве. Затем покажем суммирование чисел массива.

эксперимент суммирования

<!-- for taking inputs -->
<input id="seriesInput" type="text" placeholder="please use space">
<!-- for submitting inputs -->
<input id="submiting" onclick="seriesFunction()" value="Submit" type="button">
<!-- for placing results -->
<div> Summation is <span id="sum"></span> </div>
<script type="text/javascript">

function seriesFunction()
{
    value = document.getElementById("seriesInput").value;
    // splitting string in an array
    value_arr = value.split(" ");
    alert(value_arr);
    // calling reduce method for summation
    var sum = value_arr.reduce(get_sum,0);
    // assigning result
    document.getElementById("sum").innerHTML =sum;
alert(sum);


    function get_sum(total, currentVal) {
total += currentVal;
return total;
}
}
</script>

Теги:
arrays
reduce

2 ответа

1
Лучший ответ

Вы получаете currentValue как строку в функции get_sum, попробуйте сделать integer. Вы можете сделать это так:

function get_sum(total, currentVal) {
    currentVal = parseInt(currentVal);
    total += currentVal;
    return total;
}
  • 0
    DASH, вы не можете предполагать, что числа являются целыми, используя parseInt . ОП говорит номер.
  • 0
    Я предположил, что он поймет ошибку, которую совершил Ахмед. Вы можете использовать Number (currentVal), который даст вам целое число или число с плавающей запятой, что бы это ни было. + CurrentVal - это короткий путь. Спасибо за указание.
Показать ещё 1 комментарий
1

Вам необходимо изменить код:

function get_sum(total, currentVal) {
                total += +currentVal;
                return total;
}

Обратите внимание + перед currentVal. Это преобразует строку в число не только int. Таким образом, преимущество заключается в том, что если вы введете три значения, например 1.1 1.2 1.3, вы получите сумму как 6.6. Раньше без этого вы делали конкатенацию строк вместо суммы, которую вы намеревались сделать.

function seriesFunction() {
  value = document.getElementById("seriesInput").value;
  // splitting string in an array
  value_arr = value.split(" ");
  alert(value_arr);
  // calling reduce method for summation
  var sum = value_arr.reduce(get_sum, 0);
  // assigning result
  document.getElementById("sum").innerHTML = sum;
  alert(sum);


  function get_sum(total, currentVal) {
    total += +currentVal;
    return total;
  }
}
<input id="seriesInput" type="text" placeholder="please use space">
<!-- for submitting inputs -->
<input id="submiting" onclick="seriesFunction()" value="Submit" type="button">
<!-- for placing results -->
<div> Summation is <span id="sum"></span> </div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню