6

Как добавить начальные нули к значению?

14

Как я могу дополнить значение нулями слева в JavaScript? Я предполагаю, что могу создать кастомную функцию для добавления нулей к приведенному значению, но интересно, есть ли более прямой способ сделать это?

Примечание: Под дополнением значения я понимаю это в контексте базы данных (где 6-значное дополненное представление числа 5 будет "000005").

5 ответ(ов)

5

Я не могу поверить, что здесь так много сложных ответов... Просто используйте это:

var zerofilled = ('0000' + n).slice(-4);

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

let n = 1;
var zerofilled = ('0000' + n).slice(-4);
console.log(zerofilled); // Вывод: '0001'

Этот код просто добавляет нули перед числом n и обрезает строку, чтобы получить последние 4 символа. Таким образом, вы всегда получите четырехзначное число с нулями спереди, если это необходимо.

3

Вы можете использовать простой способ: добавьте умножение строк к переменной pad и превратите это в функцию. Вот пример кода:

var pad = "000000";
var n = '5';
var result = (pad + n).slice(-pad.length);

В качестве функции это будет выглядеть так:

function paddy(num, padlen, padchar) {
    var pad_char = typeof padchar !== 'undefined' ? padchar : '0';
    var pad = new Array(1 + padlen).join(pad_char);
    return (pad + num).slice(-pad.length);
}

var fu = paddy(14, 5); // 00014
var bar = paddy(2, 4, '#'); // ###2

Эта функция позволяет вам определять длину дополнения и символ, который будет использоваться для заполнения. Если не указать символ для дополнения, будет использован '0' по умолчанию.

0

Вот что я использовал для дополнения числа до 7 символов:

("0000000" + number).slice(-7)

Этот подход, вероятно, подойдет большинству пользователей.

Редактирование: Если вы хотите сделать это более универсальным, вы можете использовать:

("0".repeat(padding) + number).slice(-padding)

Редактирование 2: Обратите внимание, что начиная с ES2017 вы можете использовать String.prototype.padStart:

number.toString().padStart(padding, "0")
0

Если известно, что количество заполняемых нулями символов не превысит определенного значения, можно сделать это без использования циклов:

var fillZeroes = "00000000000000000000";  // максимальное количество заполняемых нулями символов

function zeroFill(number, width) {
    // Убедимся, что это строка
    var input = number + "";  
    var prefix = "";
    if (input.charAt(0) === '-') {
        prefix = "-";
        input = input.slice(1);
        --width;
    }
    var fillAmt = Math.max(width - input.length, 0);
    return prefix + fillZeroes.slice(0, fillAmt) + input;
}

Примеры тестирования можно найти здесь: http://jsfiddle.net/jfriend00/N87mZ/

Таким образом, данный способ позволяет эффективно добавлять нули перед числом, при этом избегая циклов и улучшая читаемость кода.

0

Быстрый и простой способ:

y = (new Array(count + 1 - x.toString().length)).join('0') + x;

Если, например, x = 5 и count = 6, то в результате вы получите y = "000005".

Этот код создает массив длиной, равной разности между count + 1 и длиной числа x, затем заполняет его нулями и конкатенирует с x. Это гарантирует, что итоговая строка y имеет нужную вам длину, добавляя перед x достаточное количество нулей.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь