배열이 특정 조건을 만족시키는지 확인하고 싶다.
Array 객체의 every
메서드를 사용하면 모든 원소가 주어진 조건을 통과하는지 확인할 수 있다. 예를 들어 다음 코드는 배열의 모든 원소가 알파벳과 숫자로만 이루어졌는지 확인한다.
var elemSet = new Array("**",123,"aaa","abc","-",46,"AAA");
//테스트 함수
function textValue(element, index, array){
var textExp = /^[a-zA-Z]+$/;
return textExp.test(element);
}
//테스트 실행
document.write(elemSet.every(textValue)); //false
Array 객체의 some
메서드를 사용하면 주어진 조건을 만족시키는 요소가 최소 1개 이상 있는지 확인할 수 있다. 다음 코드는 배열의 원소 중 알파벳과 숫자로만 이루어진 문자열이 하나라도 있는지 확인한다.
var elemSet = new Array("**",123,"aaa","abc","-",46,"AAA");
//테스트 함수
function textValue(element, index, array){
var textExp = /^[a-zA-Z]+$/;
return textExp.test(element);
}
//테스트 실행
document.write(elemSet.some(textValue)); //true
every
메서드를 사용할 때는 함수의 반환값이 false가 되면 동작을 멈추고 메서드는 false를 반환한다.
반면 some
메서드는 반환값이 true
일 때까지만 원소를 계속 확인한다. 그러나 콜백 함수가 모든 원소를 검사하고 어느 시점에서도 true를 반환하지 않는다면 some
메서드는 false를 반환한다.
모든 배열 원소가 조건을 만족하는지 알고 싶다면 every
, 그렇지 않다면 some
을 사용하면 된다.
some
과 every
메서드 모두 IE8을 제외한 대부분의 최신 브라우저에서 지원한다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every