728x90

 

배열에 조건에 맞는 친구들이 있는지

혹은 맞지 않는 친구들이 있는지

등을 빠르게 체크할 수 있는 간단 함수를 알아보자

 

 

1. some()

이 함수는 조건에 맞는 아이템이 배열에 하나라도 있으면 true 값을 리턴한다.

 

[1, 2, 3, 4, 5].some((item) => item < 3) // TRUE  1, 2

 

위에서 1~5 배열 중에 3보다 작은 아이템이 있는가? 의 의미이다.

1,2 두개 존재한다. 고로 리턴 값은 TRUE.

 

2. every()

프로 출신들은 느낌이 올 것이다.

배열에서 모든 아이템이 조건에 해당하는가?이다.

 

[1, 2, 3, 4, 5].every((item) => item < 10);  // TRUE
[1, 2, 3, 4, 5].every((item) => item < 4);  // FALSE

 

10보다 모든 값이 작은 첫 번째 라인은 TRUE,

4보다 작은 값이 있는 두 번째 라인은 FALSE를 리턴한다.

 

 

어떨 때 야무지게 써먹을 수 있을까?

 

저는 약관 동의 같이

여러 개의 on/off를 체크해야 할 때

모든 동의가 클릭되었는지,

하나라도 off인 값이 있는지 등을 체크할 때 간간히 사용합니다.

 

const Agroup = [A, B, C];
const Bgroup = [D, E, F];

// A, B, C... = {checked: boolean}

const tempAgree = [Agroup.every((item) => item.checked), Bgroup.every((item) => item.checked)];
const isAllAgreed = tempAgree.every((item) => item === true);

 

A 그룹에 약관들, B 그룹에 약관들이 있을 때,

위 코드는 tempAgree 배열에서 [A그룹 전체 동의 여부, B그룹 전체동의 여부]를

every를 통해서 각각 체크하고

isAllAgreed에서 every를 통해 모두 동의되었는지 체크하는 로직입니다.

 

물론 some을 이용해서

체크 안 한 게 한 개라도 있는지, 

등의 로직으로 작성할 수도 있고 방법은 무수합니다.

728x90

+ Recent posts