Как использовать NumberFormat в Javascript?

Я бы хотел, чтобы мой таймер обратного отсчета показывал двузначные числа, например «53:00» вместо «53:0». Не знаете, что здесь происходит? Спасибо!

function convertSeconds(s) {
    var min = Math.floor(s / 60);
    var sec = s % 60;
    return nf(min, 2) + ':' + nf(sec, 2);
  }

Ну, это зависит от того, что такое nf() — вам нужно добавить этот код к вашему вопросу.

Alex K. 25.03.2019 17:14

Думали, что это числовой формат? Нужно ли мне сделать его собственной функцией и ссылаться на нее с помощью nf? Какой дополнительный код вы ожидаете увидеть? Извините, новичок в кодировании. Спасибо за ваше время!

Pier Stein 25.03.2019 17:17

Если ваш код работает без ошибок, значит, где-то написана функция nf() — например, в библиотеке, которую вы включили, она не является встроенной частью JavaScript.

Alex K. 25.03.2019 17:19
nf не является встроенной функцией Javascript, вам нужно будет показать, где она определена, иначе невозможно сказать, что это такое и что она делает.
Etheryte 25.03.2019 17:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
5
150
4

Ответы 4

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

function nf(num, places) {
  var s = '0' + num;
  return s.slice(places * -1);
}

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = s % 60;
  return nf(min, 2) + ':' + nf(sec, 2);
}

Должен дать вам то, что вы хотите

Где-то в вашем стеке кода должен быть nf(), я бы назвал код выше с другим именем, поскольку текущее поведение/зависимости nf() неизвестны.

Alex K. 25.03.2019 17:28

Вы можете использовать padStart(), чтобы убедиться, что строка имеет определенную длину. Если это не так, он дополнит его тем, что вы хотите. В этом случае 0:

const nf = (n, c) => n.toString().padStart(c, '0');

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = (s % 60)
  return nf(min, 2) + ':' + nf(sec, 2);
}

console.info(convertSeconds(64))
console.info(convertSeconds(119))

Не уверен, что вы хотите заполнить минуты нет.

Существует также Intl.NumberFormat(), у которого есть опция для минимальных цифр (хотя это кажется излишним для этого):

console.info(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(2));

console.info(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(59));

Функция nf() должна быть такой:

function nf(num){
    if (num < 10){
        return "0"+num;
    }
    return num;
}

console.info(nf(7));
// 07
console.info(nf(11));
// 11

Вам не нужно преобразовывать в строку для условия. return n <= 9 ? '0' + n : n; будет немного короче…

feeela 25.03.2019 17:25

Если под nf() вы подразумеваете функцию, которая форматирует Number как string заданных цифр, это может быть ее реализацией:

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

Демо:

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = s % 60;
  return nf(min, 2) + ':' + nf(sec, 2);
}

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

console.info(nf(4,2));

Другие вопросы по теме