因此,我被赋予了在代码后加上数字来制作唯一代码的任务。
并且我已经尝试并成功了,但是有一件事阻止了该数字达到极限的情况呢?值9999
如何将其重置为00001。提升位数增加了1

这是我的代码段

function getNewCode(value, callback){
    let newCode = _.upperCase(value)  + "-";
    let lastCode = newCode + "0001"

    Transaction.findOne({tr_number: new RegExp(newCode, 'i')}, (err, doc) => {

        if(err) callback(err)
        if (!_.isNil(doc)){
            let arr = doc.tr_number.split("-");

// in this part, i want got some conditional to set a new value
//when it got max length = 9999 for an example

            let inc = parseInt(arr[1]) + 1;

            lastCode = newCode + ("0000"+inc).slice(-4);
            console.log('lastCode', ciduk, lastCode);

            return callback(lastCode);
        }else{
            return callback(lastCode);
        }
    }).sort({tr_number: -1})
};


对不起,我的语言不好:)谢谢。

最佳答案

您可以通过将其转换为toString()并获取其length来获得数字大小。

function getNext(prevStr) {
    let padSize = prevStr.length;
    let next = parseInt(prevStr, 10) + 1;
    if (next >= 10 ** padSize) {
        padSize++;
        next = 1;
    }
    return next.toString().padStart(padSize, '0');
}

console.log(getNext('0099')); // '0100'
console.log(getNext('9999')); // '00001'

07-28 07:35