(underscore.js)_.some

호두파파·2021년 2월 25일
0

underScore.js

목록 보기
6/9

_.some

위 함수는 이전 살펴보았던 _.every와 달리 조건 내 한가지라도 true로 반환할 수 있다면, true를 반환하는 함수이다.

_.some(list, [predicate], [context])

모든 항목이 false를 반환하면, ".some"은 false를 반환합니다. 그러나 컬렉션의 모든 것이 false를 반환하지 않으면(적어도 하나의 true가 있기 때문이 ".some"은 true를 반환한다.)

.some 함수를 .every함수를 이용해 구현하기 위해선

_.every 함수의 논리를 뒤집으며 간단하게 구현할 수 있다.

_.every(list, ![predicate], [context]) 
//!_.every(list, ![predicate], [context])
_.some = !_.every(list, ![predicate], [context])

위 함수를 구현하는 _.every 함수 로직은 아래와 같다.

//every
function every(collection, predicate) {
  // 조건으로 요구되는 함수 테스트를 통과하지 못한 항목이 있으면 
  //every 함수가 false를 리턴한다.
  for(let i = 0; i < collection.length; i++) {
    if(predicate(collection[i]) === false) {
      return false;
    }
  }
  // 컬렉션의 모든 항목이 true인지 테스트 한 후 
  // every 함수는  true를 반환한다. 
  return true
}

// 항목 입력이 짝수인지 테스트하는 함수 isEven 생성 
function isEven (item) {
     // modulo (%)는 두 수를 나눈 나머지를 찾습니다 
    if (item % 2 === 0 ) {
         return  true ;
    }
     false 반환 ;
}

every ([ 2 , 4 ], isEven); // true를 반환합니다. 
every ([ 1 , 2 , 3 ], isEven); // 거짓 반환

함수 구현하기

function _.some(collection, predicate) {
  return ! every(collecrion, function(item) {
    return !(predicate(item));
  })
}

참고

https://tingdeng.wordpress.com/2015/08/10/implementation-of-_-some-and-_-every/

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글