Array some, every 알아보기

2020년 08월 19일
레거시 코드를 수정하던 중 예전에 작성했던 코드를 보았다.
// 배열에 홀수만 있는지 확인하기 1 const arr = [1, 2, 3, 5, 7]; let flag = true; arr.forEach(v => { if (flag && v % 2 === 0) { flag = false; } }) if (flag) { console.log('배열에는 홀수만 있네요.'); } else { console.log('배열에는 짝수도 있어요.'); }
배열 안에 홀수만 존재하는가를 찾아보기 위해 flag 변수를 만들어 체크하였다.
 
하지만 위의 코드를 아래와 같이 작성할 수 있게 되었다.
// 배열에 홀수만 있는지 확인하기 2 const arr = [1, 2, 3, 5, 7]; const result = arr.every(v => v % 2 === 1); // false if (result) { console.log('배열에는 홀수만 있네요.'); } else { console.log('배열에는 짝수도 있어요.'); }
Array의 every는 배열 안의 모든 항목이 콜백 함수의 결과가 true인지 검사하여 true 혹은 false를 반환한다.
위 코드에서는 짝수인 2가 포함되어 false를 반환한 모습이다.
비슷한 메소드로 some이 있는데, 배열 안의 항목 중 콜백 함수의 결과가 true인 것이 하나라도 있다면 true를 반환한다.
true인 값이 하나도 없다면 false를 반환한다.
// 배열에 짝수가 있는지 확인하기 const arr = [1, 2, 3, 5, 7]; const result = arr.some(v => v % 2 === 0); // true if (result) { console.log('배열에는 짝수가 있어요.'); } else { console.log('배열에는 짝수가 없어요.'); }
 
아래는 응용 버전이다.
// 배열에 truthy한 값만 존재하는지 확인 const hasOnlyTruth = [true, true, false, true].every(Boolean); // false // 배열에 숫자만 포함되어 있는지 확인 const hasOnlyNumber = [1, 2, 3, 4, 5].every((item) => typeof item === 'number'); // true const value = 'b'; const list = ['a', 'b', 'c', 'd']; const hasValue = list.some((item) => item === value); // true (include를 사용할 수 있지만 예제니까 넘어가자)