반응형

1. 빈값 체크 하기 (Null, Undefined)

form 작성할때 필수값 체크할때 무조건 필요해요. 단순히 value가 비어있을때 체크해도 되지만 확실하게 null값, undefined 값을 같이 비교해주면 완벽하게 비교할 수 있습니다.

function isEmpty(value) {
    return value === null || value === undefined || value === '';
}

// 사용 예시
console.log(isEmpty(null));  // true
console.log(isEmpty(''));    // true
console.log(isEmpty(0));     // false
console.log(isEmpty([]));    // false

 

 

2. 숫자인지 체크 

보통 input에 number 로 타입을 지정하면 대부분 체크가 되긴하지만 "e" 입력했을때 입력되는거 아시나요? ㅎㅎ 1e+6 이라고 입력했을때 수학적인 측면에서 1000000 을 뜻하기 때문에 e는 숫자체크를 해도 입력이됩니다. 이를 온전히 차단하고자 유효성 체크를 해주면 좋습니다.

function isNumeric(value) {
    return !isNaN(value) && typeof value === 'number';
}

// 사용 예시
console.log(isNumeric(123));    // true
console.log(isNumeric('123'));  // false
console.log(isNumeric(NaN));    // false
console.log(isNumeric(3.14));   // true

 

 

3. 이메일 타입 체크 

이 또한 input의 타입을 email로 체크해주면 웬만하면 체크해주긴 합니다만, 간혹 스크립트로 체크해야할 때가 있습니다. 

주로 정규식을 사용해서 체크합니다.

function isValidEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
}

// 사용 예시
console.log(isValidEmail('test@example.com'));  // true
console.log(isValidEmail('test@.com'));         // false
console.log(isValidEmail('test@example'));      // false

 

4. 전화번호 타입 체크 

한국에서 많이 사용하는 전화번호 체크입니다. 나라마다 번화번호 수가 다르니 한국한해서 사용 가능하지만, 진짜 많이 사용하는 유효성 체크 문법입니다. 역시 유효성 체크로 간단하게 할 수 있습니다.

function isValidPhoneNumber(phone) {
    const phoneRegex = /^01[016789]-\d{3,4}-\d{4}$/;
    return phoneRegex.test(phone);
}

// 사용 예시
console.log(isValidPhoneNumber('010-1234-5678'));  // true
console.log(isValidPhoneNumber('02-1234-5678'));   // false
console.log(isValidPhoneNumber('01012345678'));    // false

 

5. 한국 원화 타입 함수 

이건 유효성이라기 보다는 타입 변환이라고 보는게 더 맞겠네요. 그런데 이것도 진짜 많이 씁니다. 매번 귀찮게 찾아서 썼는데 이번기회에 저장해 놓고 걍 복붙해서 쓰려고요. 간단하게 만약 10000 일때 10,000 이렇게 표시해 주도록 해주는 겁니다.

function formatCurrencyKRW(amount) {
    let num = Number(amount); // "10000"일때 10000 로 변환
    if (isNaN(num)) { // 만약 "참새"같은 글자인 경우에는 return 
        return 'Invalid number';
    }
    return num.toLocaleString('ko-KR') + ' 원';
}

// 사용 예시
console.log(formatCurrencyKRW(1000000));    // "1,000,000 원"
console.log(formatCurrencyKRW('123456789'));// "123,456,789 원"
console.log(formatCurrencyKRW('10000'));    // "10,000 원"
console.log(formatCurrencyKRW('abc'));      // "Invalid number"
console.log(formatCurrencyKRW(NaN));        // "Invalid number"

 

 

아무리 AI 로 간단하게 검색해서 사용할 수 있다고 해도,

이렇게 자주 사용하는 유효성 체크를 정리해두면 바로 바로 복붙해서 사용하는게 훨씬 편하기 때문에 올려봅니다. 

반응형

'Javscript' 카테고리의 다른 글

Obejct 를 다루는 함수들  (0) 2023.09.13
문자열을 다루는 slice, split, substring  (0) 2023.09.09
배열을 다루는 forEach, map, filter  (0) 2023.09.08
반응형

Object형 데이터는 어떻게 map을 돌려야 할까.

const person = {
  id: 15,
  name: "홍길동",
  age: 33
};

이렇게 생긴 데이터가 있다고 하자.

Object.keys() 함수를 사용하면 각 object의 key 값을 배열로 나열해 준다. 

const user = {
  id: 15,
  name: "홍길동",
  age: 33
};

const keys = Object.keys(user);
console.log(keys); // ['id', 'name', 'age']

그리고 만약  value 값을 return 하고 싶다면 이렇게 한 뒤 key값들을 map이나 for문으로 돌려주면 된다. 

const user = {
  id: 15,
  name: "홍길동",
  age: 33
};

Object.keys(user).map((key, idx) => (
  <p>key: {key} - value: {user[`${key}`]}</p>
))

 

결과 이미지

 

이외 객체의 key값을 추가하고 삭제하는 방법도 알아보자.

const user = {
  id: 15,
  name: "홍길동",
  age: 33
};

user.location = "Seoul"; // key값과 value값을 추가 
delete user.age; // age 속성 삭제

그리고 잘 사용되지는 않지만, 찾아본것들 중에 객체를 배열로 변환하는 두 가지 함수를 더 발견했다. 

Object.values()는 객체의 value 값들을 배열로 만들어준다. 

const user = {
  id: 15,
  name: "홍길동",
  age: 33
};

const userValues = Object.values(user);
console.log(userValues); // [15, "홍길동", 33]

또한, Object의 key값과 value값을 배열로 한번 묶고 배열로 리턴해주는 함수도 있었다. 

(즉, 이중배열로 리턴된다.)

const user = {
  id: 15,
  name: "홍길동",
  age: 33
};

const userEntries = Object.entries(user);
console.log(userEntries); // [['id', 15], ['name', '홍길동'], ['age', 33]]

 

위의 두 가지는 쓸 일이 많아 보이지는 않지만, 언젠가 쓸 수 있게 되는 상황이 오면 미리 공부해 둔 것이 뿌듯할 것 같다. 😘

반응형
반응형

문자열을 다루는 함수들은 실무에서도 많이 사용되고 있습니다. 

알아두면 유효하게 쓸 수 있습니다. 

 

1. slice 함수

slice 함수는 문자열의 부분 문자열을 추출하여 반환합니다. 

시작 인덱스와 종료 인덱스를 인자로 받아 해당 범위의 문자열을 반환합니다. 

const str = "Hello, world!";
const slicedStr = str.slice(0, 5); // 0번째부터 4번째 글자까지
const slicedStrLast = str.slice(-6); // 마지막부터 5번째 글자까지 
console.log(slicedStr); // "Hello"
console.log(slicedStrLast); // "world!"

2. split 함수

split 함수는 문자열을 특정 구분자를 기준으로 분할하여 배열로 반환합니다.

구분자를 인자로 받아 해당 구분자를 기준으로 문자열을 분할합니다.

const str = "apple,banana,orange";
const fruits = str.split(",");
console.log(fruits); // ["apple", "banana", "orange"]

3. substring 함수

substring 함수는 문자열의 부분 문자열을 추출하여 반환합니다. 

시작 인덱스와 종료 인덱스를 인자로 받아 해당 범위의 문자열을 반환합니다. 

slice와 달리, substring은 음수 인덱스를 사용하지 않고 음수 인텍스가 있는 경우, 0으로 취급해버립니다.

const str = "Hello, world!";
const subStr = str.substring(0, 5);
console.log(subStr); // "Hello"

 

 

정리하자면, 

slice와 substring은 새로운 문자열은 반환하고, split은 배열을 반환합니다. 

slice와 substring은 매우 흡사하지만, 

slice의 경우 만약 음수를 사용해서 끝에서 부터 자를 수 있고, 시작 인덱스와 마지막 인덱스의 값이 뒤바뀐 경우 "" 를 리턴하지만, substring의 경우 음수는 사용 불가하지만,  시작 인덱스와 마지막 인덱스의 값이 뒤바뀐 경우 알아서 순서를 바꿔줍니다. 

 

다음의 코드 예시를 살펴보면 이해하기 더 쉬울 것 같습니다.

const str = "I like chocolate!";

// slice
console.log(str.slice(6, 2));  // "" (빈 문자열 반환)
console.log(str.slice(-10));    // "chocolate!"

// substring
console.log(str.substring(6, 2));  // "like" (인덱스 2와 6 사이의 문자열 반환)
console.log(str.substring(-10));    // "Hello, world!" (음수 인덱스를 0으로 취급)

 

 

반응형
반응형

 

 1. ForEach 함수

forEach 메서드는 배열의 각 요소에 대해 주어진 함수를 실행하며, 반환값은 없습니다.

 이 메서드는 배열의 각 요소에 대해 특정 작업을 수행하고자 할 때 사용됩니다. 

즉, forEach는 배열을 순회하는 것 외에는 아무런 결과를 반환하지 않는다는 것입니다.

 

const numbers = [1, 2, 3, 4, 5];
numbers.forEach(num => console.log(num));
// 1
// 2
// 3
// 4
// 5

 

2. Map 함수

map 메서드는 배열의 각 요소에 대해 주어진 함수를 실행하고, 그 결과를 모아 새로운 배열로 반환합니다. 

이 메서드는 원본 배열을 변경하지 않습니다. 대신 새로운 배열을 반환하기 때문에, 변환된 값을 바탕으로 새로운 배열을 생성할 때 주로 사용됩니다. 그렇기 때문에 가상DOM을  활용하는 React 환경에서 가장 많이 사용되는 함수 중 하나 입니다. 

리액트로 개발을 한다면, 필수로 알아둬야 하는 함수입니다.

const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

 

3. Filter 함수

filter 메서드는 배열의 각 요소를 테스트하는 함수를 받아, 그 조건에 부합하는 요소만을 모아 새로운 배열로 반환합니다.

map과 마찬가지로 원본 배열은 변경되지 않습니다. 필터링 조건에 맞는 요소만을 추출할 때 사용됩니다.

역시 원본 배열을 변경하지 않고, 새로운 배열을 리턴하기 때문에 리액트에서 많이 사용되는 함수입니다.

특히 배열 데이터 수정이나, 검색조건을 개발할때 무조건 사용하게 될껍니다. 

const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]

 

반응형

+ Recent posts