PART. 2

🍎 PART.1의 메소드를 이어서 진행한다


_.contains

collection에 값이 있는지 확인하는 메소드이다.
기본값을 false로 두고, true조건만 설정한다.

// 배열 또는 객체가 주어진 값을 포함하는지 체크합니다. (`===` 연산자를 사용해서 판단합니다.)
  _.contains = (collection, target) => {
    let isTrue = false;
    _.each(collection, (item) => {
      item === target && (isTrue = true)
    })
    return isTrue;
 };

_.every

every는 collecion의 모든 요소를 iterator의 인자로 넘겨 실행된 결과가 모두 true 인지 반환하는 함수.
iteratorundefined인지 아닌지만 잘 구분하면 간단하다.

// 모든 element가 iterator에 의해 truthy한지 체크합니다.
_.every = (collection, iterator) => {
    let isTruthy = true;
    if(iterator === undefined) {
      for(const i in collection) {
        !collection[i] && (isTruthy = false);
      }
    } else {
      for(const i in collection) {
        !iterator(collection[i], i, collection) && (isTruthy = false);
      }
    }
    return isTruthy;
};

_.some

_.every의 반대다.
기본을 false로 두고 조건이 맞을 경우만 true로 설정한다.
자세한 설명은 생략한다 :)

// element가 하나라도 iterator에 의해 truthy한지 체크합니다.
// iterator가 없다면, element 그 자체가 truthy한지 체크하세요.
_.some = (collection, iterator) => {
    let isTruthy = false;
    if(iterator === undefined) {
      for(const i in collection) {
        collection[i] && (isTruthy = true);
      }
    } else {
      for(const i in collection) {
        iterator(collection[i], i, collection) && (isTruthy = true);
      }
    }
    return isTruthy;
};