반응형
# 숫자로 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자 를 합한 숫자입니다.
반응형