Почему мой общий множитель добавляет шаблон 2 к каждому ответу?

1

function getTotal() {
  let total = 0;

  for (var i = 0; i < 10; i++) {
    let valueToAdd = i;
    var multiplier = 2;
    total += valueToAdd * multiplier;
    console.log(total);
  }

  return total;
}
console.log(
  getTotal()
);

Это была моя оценка, что на каждой итерации цикла общая сумма должна быть:

а) 2, 4, 6, 8, 10... и т.д.

но вместо этого я получаю следующие ответы: b) 0,2,6,12,20,30,42..... 90

Где в моем коде репликация шаблона этого последующего добавления?

Почему я не получаю первоначальный ответ, который я намеревался в a)?

  • 0
    Вы увеличиваете значение valueToAdd на каждой итерации. Удалите его полностью и используйте total += multiplier; ?
  • 0
    С total += valueToAdd * multiplier; Вы печатаете 2, 2+4, 2+4+6, 2+4+6+8, 2+4+6+8+10 . Вы, вероятно, хотите total = valueToAdd * multiplier; вместо
Показать ещё 2 комментария
Теги:

4 ответа

1

Просто используйте total = valueToAdd * multiplier; вместо того, чтобы добавлять результат каждой итерации к total чтобы получить ожидаемый результат.

function getTotal() {
  let total = 0;

  for (var i = 0; i < 10; i++) {
    let valueToAdd = i;
    var multiplier = 2;
    total = valueToAdd * multiplier;
    console.log(total);
  }

  return total;
}

console.log(getTotal());

Также обратите внимание, что он возвращает 0, чтобы избежать запуска итерации с i=1 и условия как i<=10.

0

Из-за моей низкой репутации (<50) я не могу добавить комментарий. Поэтому я даю ему новый ответ.

total + = valueToAdd * множитель; совпадает с 「total = total + valueToAdd * multiplier;」

потому что total, valueToAdd и множитель - все числа, оператор + сделает арифметическое дополнение.

total = total + valueToAdd * multiplier = 0 + 0 * 2 = 0 (при я = 0)

total = total + valueToAdd * multiplier = 0 + 1 * 2 = 2 (при я = 1)

total = total + valueToAdd * multiplier = 2 + 2 * 2 = 6 (при я = 2)

total = total + valueToAdd * multiplier = 6 + 3 * 2 = 12 (при я = 3)

total = total + valueToAdd * multiplier = 12 + 4 * 2 = 20 (при я = 4)

почему вы получаете 0,2,6,12,20...

Но если мы изменим линию 「, пусть total = 0;」 - 「пусть total = '0';」. Теперь оператор + будет использоваться для конкатенации (добавления) строк

total = total + valueToAdd * multiplier = '0' + 0 * 2 = '0' + 0 = '00' (при я = 0)

total = total + valueToAdd * multiplier = '00' + 1 * 2 = '00' + 2 = '002' (при я = 1)

total = total + valueToAdd * multiplier = '002' + 2 * 2 = '002' + 4 = '0024' (при я = 2)

total = total + valueToAdd * multiplier = '0024' + 3 * 2 = '0024' + 6 = '00246' (при я = 3)

total = total + valueToAdd * multiplier = '00246' + 4 * 2 = '002468' (при я = 4)

вы получите итоговую строку "002468... 18".

Если это то, что вы хотите, и вы хотите, чтобы строки были от "2". Выполните следующую модификацию

  1. пусть total = ''; // пустая строка

  2. для (var я = 1; я <10; i++) {//i начинается с 1

и вы получите "24681012141618".

0

На третьем итерационном total += valueToAdd * multiplier Переводит на 2 += 2 * 2

С вашим предполагаемым результатом ваш код должен быть total = valueToAdd * multiplier

Таким образом, каждая итерация значения total будет перекрываться по формуле В то время как текущий добавляет результат формулы к переменным общей сложности, в этом случае (типе данных целого числа) будет подведено

0

Вы добавляете и умножаете оба значения, используя

total += valueToAdd * multiplier;

Итак, если вы хотите реализовать путем умножения, вы должны делать

    total = valueToAdd * multiplier;

но если вы хотите реализовать, добавив, вы должны делать

total += multiplier;

Ещё вопросы

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