부록
공통로직
자주 사용되는 유틸 로직 기술합니다.
1. 배열 관련
배열 내 중복 체크
const hasDuplicates = arr => new Set(arr).size !== arr.length;
배열에서 특정 값 모두 제거하기
const removeItemAll = (arr, value) => arr.filter(item => item !== value);
2. 문자열 관련
문자열의 첫 글자만 대문자로 변경
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);
문자열이 비어있거나 공백인지 확인
const isEmptyOrWhitespace = str => !str || str.trim().length === 0;
3. 객체 관련
객체가 비어있는지 확인
const isObjectEmpty = obj => Object.keys(obj).length === 0;
객체 깊은 복사 (Deep Copy)
const deepCopy = obj => JSON.parse(JSON.stringify(obj));
4. 날짜 관련
두 날짜 간 일수 차이 구하기
const daysBetween = (date1, date2) =>
Math.floor(Math.abs(new Date(date2) - new Date(date1)) / (1000 * 60 * 60 * 24));
날짜를 yyyy-mm-dd 형식으로 포맷하기
const formatDate = date => new Date(date).toISOString().slice(0, 10);
5. 숫자 관련
숫자를 천 단위 콤마로 포맷하기
const formatNumberWithComma = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
숫자 여부 확인하기
const isNumber = value => typeof value === 'number' && !isNaN(value);
6. URL 관련
URL 쿼리 파라미터 가져오기
const getQueryParams = url => Object.fromEntries(new URL(url).searchParams);
객체를 쿼리스트링으로 변환
const objectToQueryString = obj => new URLSearchParams(obj).toString();
7. 기타 유틸
비동기 지연(delay)
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
랜덤 정수 생성 (최소, 최대 포함)
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
let data = {};
setInterval(() => {
// 메모리에 계속 쌓이는데 제거 안 함
data[Math.random()] = new Array(1000000).join("💥");
}, 1000);