안녕하세요.
오늘은 업무 중 사용했던 유용한 배열 메서드에 대해 소개드리겠습니다.
그 주인공은 바로 every() 함수와 some() 함수입니다. 정말 유용한 함수니 꼭 기억해서 써먹으시길 바랍니다!
자, 바로 코드 예시를 봅시다.
const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터
여러분들은 위의 코드 arr1의 모든 요소에 대해서 10으로 나눴을 때 나머지가 0인지 확인하려면 어떤 코드를 사용하실 건가요?
혹시 머릿속으로 아래 코드처럼 for문을 떠올리셨나요?
const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터
let result = true;
for (const item of arr1){
if ( item % 10 !== 0) {
result = false;
}
}
return result;
(절레절레..)
저를 포함해서 개발하시는 분들 중 for문에 대한 거부감이 있으신 분들이 있으실 텐데요.
위와 똑같은 기능의 코드를 아래와 같이 every 함수를 이용해 깔끔하게 구현할 수 있습니다.
const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터
const result = arr1.every(item => item % 10 === 0);
return result;
위와 같이 every() 함수는 지시해준 조건에 따라 false값을 찾을 때까지 각 요소들에 대해 callback 함수를 실행하게 됩니다.
간단히 말하자면 "이 조건에 전부 다 true야?" 하고 배열에게 물어보는 것이라 생각하면 됩니다.
배열의 모든 값이 주어진 조건에 대해 true일 경우만 true를 반환하는 함수인 거죠.
some() 함수는 그 반대라고 생각하시면 됩니다.
const arr1 = [10, 20, 30, 40, ..., 9999990, 10000000]; // 100만개의 데이터
const result = !arr1.some(item => item % 10 !== 0);
return result;
코드를 위와 같이 작성했을 때,
arr1의 요소중 10으로 나눈 나머지가 0이 아닌 요소를 하나라도 발견한 순간 true를 반환하게 됩니다.
굳이 또 간단하게 말하자면 "이 조건인 거 있어??"라고 물어보는 것입니다.
질문에 대한 답이 "네" 라면 true를 "아녀" 라면 false를 반환하겠죠?
위와 같이 some 결과의 반대 값을 result에 대입을 해준다면, 그 위의 every 코드와 동일한 기능을 하게 되는 것입니다.
앞으로 배열의 요소에 대한 검사를 진행해야 한다면 위와 같이 every() 함수와 some() 함수를 사용해보는 건 어떠신가요?
오늘은 배열 요소에 대한 검사를 편리하게 할 수 있는 함수에 대해 알아보았습니다.
감사합니다.
'JS & TS' 카테고리의 다른 글
[TypeScript] Type 스크립트의 기본형에 대해 알아봅시다. (1) | 2023.03.14 |
---|---|
[javascript] Java Script 의 비동기 처리에 대해 알아봅시다 (0) | 2022.12.05 |
[javascript] 배열 비구조화 할당에 대해 아시나요? (0) | 2022.12.05 |