Как получить сумму цифр из числа?
Дается функция:
function digitSum(n) <> где «n» любое целое число от 0 до бесконечности.
Только только обучаюсь JS. Дошел только до этого:
Но не могу понять, числа который возвращаются это строка или массив? Что делать потом? Использовать reduce?
Дайте истинный путь, пожалуйста. Или может быть последовательность рассуждений. Или я, впринципе, в корне неправильно действую? Ответ не надо 🙂 Хочу подразобраться сам.
Строки с цифрами в JavaScript
Давайте найдем, например, сумму первого и второго ее символов:
Как вы видите, символы нашей строки также являются строками и суммируются как строки. Пусть мы хотим суммировать их как числа. Используем для этого функцию Number :
Дана строка ‘12345’ . Найдите сумму цифр этой строки.
Обращение к цифрам числа
Пусть теперь в переменной у нас хранится не число в кавычках, а просто число. В этом случае попытка обратится к его отдельному символу выдаст undefined , так как такое обращение работает только для строк:
Для решения проблемы преобразуем наше число в строку:
Пусть мы теперь хотим найти сумму первых двух цифр:
Добавим функцию Number для того, чтобы символы суммировались как числа:
Напоминаю, что проблема такого рода возникнет только при суммировании. При умножении, например, преобразование к числам можно не выполнять:
сумма цифр числа javascript
Я видел кучу других сообщений по этой теме, но ни одного в javascript. вот мой код.
Я получаю правильный ответ, я просто не полностью понимаю вторую функцию, а именно оператор while. Любая помощь будет принята с благодарностью. Спасибо!
4 ответа
Вторая функция использует оператор modulo для извлечения последней цифры:
Когда последняя цифра извлекается, она вычитается из числа:
И число делится на 10 :
Каждый раз, когда этот цикл повторяется, последняя цифра прерывается и добавляется к сумме.
Оператор modulo возвращает одиночную цифру, если левая сторона меньше правой (что произойдет для любого 1-значного числа), которое происходит, когда цикл прерывается:
Вот как добавляется лидирующая цифра к итогу.
Менее числовая альтернатива будет следующей:
Это буквально то, что вы пытаетесь сделать, итерации над цифрами числа (путем преобразования его в строку).
я использую его:)
i использую это:
Обновление (синтаксис ES6):
Не уверен, что вы имели в виду, если вы спрашивали о цикле while.
Оператор while постоянно выполняет блок операторов, в то время как конкретное условие истинно. Его синтаксис может быть выражен как:
Оператор while вычисляет выражение, которое должно возвращать логическое значение. Если выражение принимает значение true, оператор while выполняет оператор в блоке while. Оператор while продолжает тестирование выражения и выполнение его блока до тех пор, пока выражение не примет значение false.
Цикл while здесь извлекает цифры один за другим из фактического числа и добавляет их. Попробуйте сделать каждый шаг вручную, и вы получите его.
сумма цифр числа javascript
Я видел кучу других сообщений по этой теме, но ни одного в javascript. вот мой код.
Я получаю правильный ответ, я просто не совсем понимаю вторую функцию, а именно оператор while. Любая помощь будет принята с благодарностью. Спасибо!
задан 03 фев ’12, 23:02
4 ответы
Вторая функция использует оператор по модулю для извлечения последней цифры:
Когда извлекается последняя цифра, она вычитается из числа:
И число делится на 10 :
Каждый раз, когда этот цикл повторяется, последняя цифра обрезается и прибавляется к сумме.
Оператор по модулю возвращает одну цифру, если левая часть меньше правой (что произойдет для любого однозначного числа), что происходит при разрыве цикла:
Вот как первая цифра добавляется к общей сумме.
Менее числовой альтернативой было бы следующее:
Он делает буквально то, что вы пытаетесь сделать, а именно перебирать цифры числа (преобразовывая его в строку).
Это не сработает для экспоненциальных чисел. — Харви А. Рамер
я использую это 🙂
я использую это:
Обновление (синтаксис ES6):

Не уверен, что вы имели в виду, если вы спрашивали о цикле while ..
Оператор while постоянно выполняет блок операторов, пока выполняется определенное условие. Его синтаксис можно выразить как:
Оператор while вычисляет выражение, которое должно возвращать логическое значение. Если выражение истинно, оператор while выполняет оператор (ы) в блоке while. Оператор while продолжает тестирование выражения и выполнение его блока до тех пор, пока выражение не станет ложным.
Цикл while здесь извлекает цифры по одной из фактического числа и добавляет их. Попробуйте проделать каждый шаг вручную, и у вас все получится.
Вопрос не в том, как while работает, но про какой код внутри пока делал. 🙂 — Кен Уайт
Я имел в виду больше о том, как работает код внутри оператора while, но в любом случае спасибо за четкое объяснение — Ник Майринг
@NicMeiring Нет проблем, дайте мне знать, если вам все еще нужны дополнительные объяснения. — Салил
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками javascript parsing sum or задайте свой вопрос.