MDN 주소 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every
Array.prototype.every() - JavaScript | MDN
every() 메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트합니다. Boolean 값을 반환합니다.
developer.mozilla.org
그 동안 알고리즘 문제 등을 풀면서 배열의 모든 요소들이 특정 조건을 만족하는지 여부를 따질 때, 반복문을 만들어서 어떤 조건을 달성하지 못하면 boolean값을 담은 변수를 false로 만들고 동시에 반복문을 break; 하는 형식으로 코드를 작성했었다. 그런데 오늘 스터디모임을 통해 다른 분이 작성한 코드를 보면서 배열의 메소드를 새로 발견하게 되어 잘 활용하면 간결한 코드를 작성하는데 도움이 될 것 같아 정리해 보고자 한다.
every는 callback이 거짓을 반환하는 요소를 찾을 때까지 배열에 있는 각 요소에 대해 한 번씩 callbackFn 함수를 실행합니다. 해당하는 요소를 발견한 경우 every는 즉시 false를 반환합니다. 그렇지 않으면, 즉 모든 값에서 참을 반환하면 true를 반환합니다.
그동안 사용하던 반복문을 이용하던 방식에서는 break;를 사용하지 않으면 반복문을 전부 순회해야 해서 연산수가 많아진다는 단점이 있어서 break;를 사용했었는데, 위 설명을 보아 every를 활용하면 그런 걱정은 하지 않아도 되겠다.
- 아래는 MDN 문서 내용 중...!
"참고: 빈 배열에서 호출하면 무조건 true를 반환합니다!"
할당한 값이 있는 배열의 인덱스에서만 callbackFn을 호출합니다. 삭제했거나 값을 할당한 적이 없는 인덱스에서는 호출하지 않습니다.
callbackFn은 요소의 값, 해당 요소의 인덱스 및 순회하고 있는 배열 세 가지 인수와 함께 호출됩니다.
thisArg 매개변수를 every에 제공한 경우 callbackFn의 this로 사용됩니다. 그 외엔 undefined값을 사용합니다. 최종적으로 callbackFn이 볼 수 있는 this의 값은 함수가 볼 수 있는 this를 결정하는 평소 규칙을 따릅니다.
every는 호출한 배열을 변형하지 않습니다.
every가 처리하는 요소의 범위는 callbackFn의 첫 호출 전에 설정됩니다. every 호출 이후로 배열에 추가하는 요소는 callbackFn이 방문하지 않습니다. 배열에 존재하는 요소가 변경된 경우, callbackFn에 every가 방문하는 시점의 값을 전달합니다. 삭제한 요소는 방문하지 않습니다.
every는 (이산)수학에서 전칭(∀) 정량자(quantifier, 한정자)처럼 행동합니다. 특히, 빈 배열에 대해서는 true를 반환합니다. (이는 공집합의 모든 요소가 어떠한 주어진 조건도 만족하는 공허한 참입니다.)
'기록남기기 > JS' 카테고리의 다른 글
2. 실행 컨텍스트 (Execution Context) (0) | 2022.01.14 |
---|---|
1장. 데이터 타입 (0) | 2022.01.14 |
[JS] 소수점 계산 오류 (0) | 2021.12.23 |
[RDB] 데이터베이스 정규화란? (0) | 2021.12.20 |
[JS] 불변성(Immutable) 이란? (0) | 2021.12.16 |