Dev/JavaScript

[JavaScript] 임의의 UUID를 생성하는 방법

BiCute 2023. 1. 9. 08:00
반응형

 

 

# 숫자로 UUID 만들기

function generateUUID() {
    const digits = [];
    for (let i = 0; i < 16; i++) {
        digits.push(Math.floor(Math.random() * 10));
    }

    return `${digits[0]}${digits[1]}${digits[2]}${digits[3]}-${digits[4]}${digits[5]}-${digits[6]}${digits[7]}-${digits[8]}${digits[9]}-${digits[10]}${digits[11]}${digits[12]}${digits[13]}${digits[14]}${digits[15]}`;
}

console.log(generateUUID());

 

for 반복문을 16번 반복하며, 각 반복문은 Math.random()을 이용하여 0에서 9까지의 임의의 숫자를 생성하고

생성된 값을 digits 배열에 추가합니다.

 

마지막으로 각 숫자를 담고있는, 배열의 인덱스 번호를 이용하여 UUID를 원하는 형식으로 출력합니다.

 

return 부분은 원하는 형태로 slice자르고 join을 이용해서 붙여 원하는 조합을 만들 수도 있습니다.

예)
return `${digits.slice(0, 4).join('')}-${digits.slice(4, 6).join('')}-${digits.slice(6, 8).join('')}-${digits.slice(8, 10).join('')}-${digits.slice(10).join('')}`;

 

 

 

# 문자와 숫자로 UUID 만들기

function generateUUID() {
    const digits = [];
    for (let i = 0; i < 16; i++) {
        digits.push(Math.floor(Math.random() * 36).toString(36));
    }

    return `${digits[0]}${digits[1]}${digits[2]}${digits[3]}-${digits[4]}${digits[5]}-${digits[6]}${digits[7]}-${digits[8]}${digits[9]}-${digits[10]}${digits[11]}${digits[12]}${digits[13]}${digits[14]}${digits[15]}`;
}

console.log(generateUUID());

toString 메서드는 숫자를 문자열로 변환하는 내장 JavaScript 메서드입니다. 

 

Math.random()함수를 사용하여 0에서 36 사이의 임의의 숫자를 생성한 다음,

toString(36)방법을 사용하여 숫자를 36진법(숫자 0-9 및 문자 a-z)로 변환합니다.

 

 

 

# 대문자, 소문자를 구분하여 문자와 숫자로 UUID 만들기

function generateUUID() {
    const digits = [];
    for (let i = 0; i < 16; i++) {
        let digit = Math.floor(Math.random() * 36).toString(36);
        if (Math.random() < 0.5) {
            digit = digit.toUpperCase();
        } else {
            digit = digit.toLowerCase();
        }
        digits.push(digit);
    }

    // 숫자를 UUID 문자열로 포맷
    return `${digits[0]}${digits[1]}${digits[2]}${digits[3]}-${digits[4]}${digits[5]}-${digits[6]}${digits[7]}-${digits[8]}${digits[9]}-${digits[10]}${digits[11]}${digits[12]}${digits[13]}${digits[14]}${digits[15]}`;
}

console.log(generateUUID());

 

위 방식과 동일하지만 각 반복마다 생성된 결과값에서

한 번 더 임의로 50% 확률로 나누어 true일 경우 대문자로, false 일 경우 소문자로 변환합니다.

 

 

 

# 대문자, 소문자를 구분하여 문자와 숫자로 UUID 만들기 2

function generateUUID() {
    const digits = [];
    for (let i = 0; i < 16; i++) {
        let digit;
        const num = Math.floor(Math.random() * 62);
        if (num < 10) {
            // 숫자 생성
            digit = num.toString();
        } else if (num < 36) {
            // 대문자 생성
            digit = String.fromCharCode(num - 10 + 65);
        } else {
            // 소문자 생성
            digit = String.fromCharCode(num - 36 + 97);
        }
        digits.push(digit);
    }

    return `${digits[0]}${digits[1]}${digits[2]}${digits[3]}-${digits[4]}${digits[5]}-${digits[6]}${digits[7]}-${digits[8]}${digits[9]}-${digits[10]}${digits[11]}${digits[12]}${digits[13]}${digits[14]}${digits[15]}`;
}

console.log(generateUUID());

String.fromCharCode를 이용하여 문자를 유니코드 번호로 변환하는 방식입니다.
랜덤의 범위 62는 숫자 10개 알파벳은 대문자 26자, 소문자 26자 를 합한 숫자입니다.

 

 

 

반응형