some, every 메소드
some 메소드 - 어떠한 배열에서 조건을 만족하는 요소가 한 개 이상 있는지 확인하는 메소드
every 메소드 - 모든 요소가 조건을 만족하는지를 확인하는 메소드
코드를 보면 다음과 같이 두 메소드에 똑같은 콜백 함수를 아규먼트로 사용하고 있다.
// some, every
const numbers = [1,3,5,7,9];
const someReturn = numbers.some((el) => el > 5);
const everyReturn = numbers.every((el) => el > 5);
console.log('some:', someReturn);
console.log('every:', everyReturn);
콜백 함수가 조건식을 리턴하는 부분은 filter나 find 메소드와 비슷하지만
출력 결과 true와 false 불린 타입의 값만 리턴하는 것을 볼 수 있다.
some의 콜백 함수를 리턴하는 조건식을 보면 (el > 5)
요소의 값이 5보다 큰 값인지를 확인하고 있는데
some 메소드의 경우에는 조건을 만족하는 7과 9가 있으므로
한 개 이상의 조건을 만족하기 때문에 true가 출력,
every의 콜백 함수는 모든 요소가 조건을 만족해야하므로
조건을 만족하지 않는 1, 3, 5가 있기 때문에 false가 출력된다.
코드를 좀 더 직관적으로 살펴보기 위해 index까지 확인해보자면
// some, every
const numbers = [1,3,5,7,9];
const someReturn = numbers.some((el, i) => {
console.log('some:',i);
return el > 5;
});
const everyReturn = numbers.every((el, i) => {
console.log('every:',i);
return el > 5;
});
console.log('some:', someReturn);
console.log('every:', everyReturn);
index 값을 넣어 배열을 확인해봤을 때,
배열의 개수만큼 다섯 번 반복하는 것이 아니라
some은 4번, every는 1번 만에 반복이 끝난 것을 확인할 수 있다.
some 메소드는 조건을 만족하는 요소가 한 개 이상 있는지를 확인하기 때문에
조건을 만족하는 요소를 찾는 순간 true를 리턴하고 반복을 종료한다.
그래서 4번째 요소,즉 3번째 index에서 7이라는 값이 조건을 만족하기 때문에 4번만 동작한 것이다.
[0] - 1 / [1] - 3 / [2] - 5 / [3] - 7 => [3]번째 index부터 조건 만족 하므로 종료
every 메소드는 모든 요소가 조건을 만족하는지를 확인하기 때문에
조건을 만족하지 않는 요소를 찾는 순간 false를 리턴하고 반복을 종료한다.
그래서 1번째 요소 ,즉 0번째 index에서부터 1이 5보다 크지 않기 때문에 한 번 만에 반복이 종료된 것이다.
[0] - 1 => [0]번째 index 부터 조건을 만족하지 않으므로 종료
어떻게 보면 every 메소드의 의미를 반대로,
조건을 만족하지 않는 요소가 1개 이상 있는지 확인하는 메소드라고 볼 수 있다.
참고로 some과 every 메소드를 활용할 때
만약 메소드를 호출하는 배열이 비어있다면
// some, every
const numbers = []; // 빈 배열
const someReturn = numbers.some((el, i) => {
console.log('some:',i);
return el > 5;
});
const everyReturn = numbers.every((el, i) => {
console.log('every:',i);
return el > 5;
});
console.log('some:', someReturn);
console.log('every:', everyReturn);
콜백 함수를 실행하지도 않으며
주어진 코드를 예시로 출력결과는
some : false , every는 ture를 리턴한다.
정리하자면 위와 같이 배열 안에서 어떤 조건을 만족하는 요소들을 추려낼 때는
filter나 find 메소드를 활용할 수도 있지만
배열 내의 요소들이 단순히 그 조건을 만족하는지만 확인하고자 할 때는
some이나 every 메소드가 유용하게 활용될 수 있다.
▶ Notion
https://purrfect-gargoyle-935.notion.site/every-159e9530b3e18008b96ce03d9c445962?pvs=4
'JS' 카테고리의 다른 글
(28) Modern JavaScript - 배열 메소드 : sort, reverse (0) | 2024.12.12 |
---|---|
(27) Modern JavaScript - 배열 메소드 : reduce (0) | 2024.12.12 |
(25) Modern JavaScript - 배열 메소드 : filter, find (0) | 2024.12.11 |
(24) Modern JavaScript - 배열 메소드 : forEach, map (0) | 2024.12.10 |
모던 자바스크립트 (15) ~ (23) 정리 (0) | 2024.12.09 |