반응형
1. 숫자 3자리마다 콤마 찍기
function formatNumberWithCommas(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
console.log(formatNumberWithCommas(123456789)); // "123,456,789"
2. 카멜 케이스를 스네이크 케이스로 변환 (Camel to Snake)
function camelToSnake(str) {
return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
}
console.log(camelToSnake('helloWorldExample')); // "hello_world_example"
3. 스네이크 케이스를 카멜 케이스로 변환 (Snake to Camel)
function snakeToCamel(str) {
return str.replace(/(_\w)/g, matches => matches[1].toUpperCase());
}
console.log(snakeToCamel('hello_world_example')); // "helloWorldExample"
4. 이메일 주소 유효성 체크
function isValidEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
console.log(isValidEmail('test@example.com')); // true
console.log(isValidEmail('testexample.com')); // false
5. 깊은복사(Deep Copy)
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
const original = { name: "Alice", age: 25, address: { city: "Seoul" } };
const copied = deepCopy(original);
copied.address.city = "Busan";
console.log(original.address.city); // "Seoul"
6. 핸드폰번호 체크
function isValidPhoneNumber(phoneNumber) {
// 010으로 시작하고, 하이픈(-)을 포함한 13자리 숫자인지 검사
const regex = /^010-?[0-9]{4}-?[0-9]{4}$/;
return regex.test(phoneNumber);
}
const phoneNumber1 = "010-1234-5678";
const phoneNumber2 = "01012345678"; // 하이픈 없음
const phoneNumber3 = "0101234567";
console.log(isValidPhoneNumber(phoneNumber1)); // true
console.log(isValidPhoneNumber(phoneNumber2)); // true
console.log(isValidPhoneNumber(phoneNumber3)); // false
7. 빈 값 체크
// undefined, null, 0, '', false, 요소가 없는 배열이나 객체를 의미
function isEmpty(value) {
return (
value === undefined ||
value === null ||
(typeof value === 'object' && Object.keys(value).length === 0) ||
(typeof value === 'string' && value.trim() === '') ||
value === 0
);
}
const myVariable1 = null;
const myVariable2 = "";
const myVariable3 = 0;
const myVariable4 = {};
const myVariable5 = [];
console.log(isEmpty(myVariable1)); // true
console.log(isEmpty(myVariable2)); // true
console.log(isEmpty(myVariable3)); // true
console.log(isEmpty(myVariable4)); // true
console.log(isEmpty(myVariable5)); // true
const myVariable6 = " "; // 공백만 있는 문자열
console.log(isEmpty(myVariable6)); // true
const myVariable7 = [1, 2, 3];
console.log(isEmpty(myVariable7)); // false
8. 데이터 타입 확인
function getType(value) {
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}
console.log(getType(42)); // "number"
console.log(getType("hello")); // "string"
console.log(getType(true)); // "boolean"
console.log(getType(null)); // "null"
console.log(getType(undefined)); // "undefined"
console.log(getType([1, 2, 3])); // "array"
console.log(getType({ name: "홍길동" })); // "object"
console.log(getType(new Date())); // "date"
9. 다양한 날짜 포맷 변환 함수
function formatDate(date, format = 'YYYY-MM-DD') {
const map = {
YYYY: date.getFullYear(),
MM: ('0' + (date.getMonth() + 1)).slice(-2),
DD: ('0' + date.getDate()).slice(-2),
hh: ('0' + date.getHours()).slice(-2),
mm: ('0' + date.getMinutes()).slice(-2),
ss: ('0' + date.getSeconds()).slice(-2),
};
return format.replace(/YYYY|MM|DD|hh|mm|ss/g, matched => map[matched]);
}
// 예시:
const today = new Date();
console.log(formatDate(today, 'YYYY년 MM월 DD일 hh시 mm분 ss초')); // 2023년 11월 30일 15시 32분 05초
10. 날짜 계산 함수
function addDays(date, days) {
const newDate = new Date(date);
newDate.setDate(newDate.getDate() + days);
return newDate;
}
function getDaysDiff(startDate, endDate) {
const diffInMs = endDate - startDate;
return Math.ceil(diffInMs / (1000 * 60 * 60 * 24));
}
// 예시:
const today = new Date();
const tomorrow = addDays(today, 1);
console.log(tomorrow); // 내일 날짜
const daysDiff = getDaysDiff(new Date('2023-11-01'), new Date('2023-11-30'));
console.log(daysDiff); // 30
반응형
'JS > JavaScript' 카테고리의 다른 글
#25 자바스크립트 jQuery, Ajax, 에니메이션 (1) | 2024.09.08 |
---|---|
#24 자바스크립트 async/await (0) | 2024.09.06 |
#23 자바스크립트 ES6 (0) | 2024.09.06 |
#22 자바스크립트 Promise (0) | 2024.09.05 |
#21 자바스크립트 비동기 처리: setTimeout과 setInterval (0) | 2024.09.05 |
#20 자바스크립트 이벤트 루프(Event Loop): 콜 스택, 이벤트 큐, 태스크 큐 (0) | 2024.09.04 |
#19 자바스크립트 클로저 활용 예시 : 즉시 실행 함수(IIFE)와 모듈 패턴 (0) | 2024.09.03 |
#18 자바스크립트 클로저(Closure) 개념 (0) | 2024.09.03 |