Задать вопрос
lavezzi1
@lavezzi1

Как складывать строки как числа, сохраняя нули впереди?

Есть число 0001, как к нему прибавить 1 и получить 0002?
  • Вопрос задан
  • 239 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Коротко:

const add = (str, num, saveLength) =>
  `${+str + num}`.padStart(str.length, 0).slice(-str.length * !!saveLength);

Длинно:

function add(str, num, saveLength) {
  const result = [];
  let overflow = 0;
  let i = str.length - 1;

  while (saveLength ? i >= 0 : (overflow || num || i >= 0)) {
    const d = (str[i] | 0) + (num % 10) + overflow;
    result.push(d % 10);
    overflow = +(d > 9);
    num = num / 10 | 0;
    i--;
  }

  return result.reverse().join('');
}

Примеры использования:

add('0001', 1) // '0002'
add('000099', 901) // '001000'
add('05', 99) // '104'
add('05', 99, true) // '04'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы