본문으로 바로가기
반응형

이번 글에서는 ES5에서 지원하는 Array Method 중 비슷한 성격의 every와 some에 대해서 살펴보도록 하겠습니다. 이 두가지 Array Method는 배열의 요소들이 주어진 조건을 만족하는지 여부에 대한 검증을 수행합니다.

 

1. Array.prototype.every()

  • every()는 배열의 각 엘리먼트에 대해서 테스트 함수의 반환 값이 모두 true인지 확인합니다.
  • 모든 case가 true일때 true를 반환합니다.
  • 하나라도 false이면 반환 값은 false입니다.
  • 기존 배열 값은 변경되지 않습니다.

[문법]

arr.every(function(currentValue, index, array), thisValue))

 

Parameter Description
function

(필수) 배열의 각 값에 대해 실행할 함수 (총 3개 인자)

   - currentValue (필수) 배열내에서 순차적으로 입력되는 엘리먼트
   - index (옵션) 현재 엘리먼트의 배열 내 index
   - array (옵션) 현재 엘리먼트가 속한 배열
thisValue (옵션) 함수 내부에서 사용될 this에 대한 값

[예제]

아래 예제는 나이에 대한 조건을 두고 every()의 return 값을 확인해보는 예제입니다. 배열에 대해서 배열 내의 모든 항목이 조건을 만족하는지 체크하며, 하나라도 false이면 false입니다. 간단하게 AND 조건이라고 생각하면 되겠습니다.

var objArr = [{name: '철수', age: 10}, {name: '영희', age: 10}, {name: '바둑이', age: 2}]

console.log(objArr.every((item)=> item.age>5)); //false (바둑이 탈락!)
console.log(objArr.every((item)=> item.age>1)); //true

 

2. Array.prototype.some()

  • some()은 배열의 각 엘리먼트에 대해서 테스트 함수의 반환 값이 하나라도 true가 있는지 확인합니다.
  • 하나라도 true가 발생하면 true를 반환합니다.
  • 모두 false인 경우만 false를 반환합니다.
  • every가 and 조건이라면 some은 or 조건입니다.
  • 기존 배열 값은 변경되지 않습니다.

[문법]

arr.some(function(currentValue, index, array), thisValue))

* 인자에 대한 설명은 Array.prototype.every 참조

[예제]

배열의 각 요소에 대해서 하나라도 조건을 만족하는 경우 true를 return 합니다. 각 배열에 대한 값의 OR 조건이라고 생각하면 되겠습니다.

var objArr = [{name: '철수', age: 10},{name: '영희', age: 10}, {name: '바둑이', age: 2}]

console.log(objArr.some((item)=> item.age>5)); //true
console.log(objArr.some((item)=> item.age>10)); //false (모두 탈락!)

 

이와같이 every 와 some 메소드는 기존에 for loop로 구현해야 했던 루틴을 아주 간단하게 표현할 수 있게 도와줍니다.

반응형