현재 진행중인 프로젝트 진행 중,
'유기견 보호소 관리자'가 회원가입 할 경우의 validation 고려해야 하기 위해 초반엔 아래와 같은 코드를 쳤다:
if (
!email ||
!password ||
!nickname ||
!role ||
!name ||
!region ||
!phoneNumber ||
!description ||
!caution
)
throw ApiError.setBadRequest("All fields are required.");
일반 유저와는 달리 입력해야하는 input값이 많아 단순한 하드코딩이 진행되었다.
그러던 중 팀원분을 통해 Array.every()
의 키워드를 알게 되었고 아래와 같이 코드를 수정하였다:
const isValid = [
email,
password,
nickname,
role,
name,
region,
phoneNumber,
description,
caution,
].every((item) => item);
if (!isValid) throw ApiError.setBadRequest("All fields are required.");
모든 요소가 콜백함수를 통과해야만 true가 나온다.
const arr = [1, 2, "hi"];
const check = (element) => element === "hi";
console.log(arr.every(check)); // false
위의 예시에서 some() 👉 every()
함수만 바꿔줬을 뿐인데 결과는 다르게 나온다.
Array.some() 메서드는 배열 안의 요소들이 콜백함수를 통과하는지 여부를 알려준다.
const arr = [1, 2, "hi"];
const check = (element) => element === "hi";
console.log(arr.some(check)); // true
위의 예시의 경우, 배열안에 "hi"
라는 요소가 하나라도 있었기에 값은 true가 나오게 된다.