every, some 배열 메서드를 활용한 배열 콘텐츠 유효성 검사하기
javascript
// 배열이 특정 조건을 만족시키는지 확인하고자 하는 경우에는 Array 객체의 every 메서드를 사용하면
// 모든 원소가 조건을 통과하는지 확인할 수 있습니다.
// 예를 들어 다음의 코드는 배열의 모든 원소가 알파벳과 숫자로만 이루어졌는지 확인하는 예제입니다.
var arrElement = [123, 'aaa', 'abc', '-', 33, 'DDD'];
var arrElement2 = ['aaa', 'abc','DDD'];
// 테스트하는 함수
function textValue(el, idx, arr) {
var textExp = /^[a-zA-Z]+$/;
return textExp.test(el);
}
// 테스트 실행
var result = arrElement.every(textValue);
var result2 = arrElement2.every(textValue);
console.log(result, result2);
// Array 객체의 some 메서드를 사용하면 주어진 조건을 만족시키는 요소가 최소 1개 이상 있는지를 확인할 수 있습니다.
var arr = [123, 'aaa', 'abc', '-', 33, 'DDD'];
var result3 = arr.some(textValue);
console.log(result3);
Array 객체의 every 와 some 메서드는 모든 원소에 대해 실행되지 않습니다.
즉, every 메서드를 사용할 때는 함수의 반환값이 false 가 되면 콜백 함수의 실행(동작)이 멈추고 메서드는 false 를 반환합니다.
반면 some 메서드는 함수의 반환값이 true 일 때까지만 원소를 계속 확인합니다.
그러나 콜백 함수가 모든 원소를 검사하고 어느 시점에서도 true 를 반환하지 않는다면 some 메서드는 false 를 반환합니다.
어떤 메서드를 사용하느냐는 필요에 따라 다릅니다.
모든 배열 원소가 조건을 만족하는지 알고 싶다면 every, 그렇지 않다면 some 을 사용하면 될 것입니다.
Jaehee's WebClub
'JavaScript > 연산자ㆍ메서드ㆍ프로퍼티' 카테고리의 다른 글
forEach, map, filter : 각 배열 원소에 함수 적용하기 (0) | 2017.01.23 |
---|---|
insertAdjacentHTML() 메서드 (0) | 2016.11.03 |
for-in 문과 hasOwnProperty() (0) | 2016.10.08 |
arguments 객체 (0) | 2016.09.29 |
틸트(~) 연산자와 물결물결(~~) 연산자 (0) | 2016.09.29 |