Jiyong's STUDY
간단한 연산자를 함수로 대체하는 이유? 본문
const not = v => !v;
const beq = a => b => a===b;
not은 정말 딱 not 연산만 해준다.
beq는 갈라져서 a===b 연산만 한다.
이건 또 왜 쓰는걸까?
_.some = list => !!_.find(list, _.identity);
_.every = list => beq(-1)(_.findIndex(list, not));
console.log(_.some([0, null, 2])); // true
console.log(_.every([0, null, 2])); // false
여기서 _.findIndex는?
const findIndex = (list, predicate) => {
for (let i = 0, len = list.length; i < len; i++)
if (predicate(list[i])) return i;
return -1;
}
조건에 따라서 인덱스를 리턴해주는 함수다.
아무튼, some은 이전 게시글과 동일한데 every가 다르다.
_.every는 모두가 참이어야만 true를 반환하는 기능을 가졌는데,
beq를 이용하여 false === false 가 true가 됨을 이용했다.
이런 식으로 간단한 연산자를 함수로 대체하는 것은
자기 자신을 반환하는 _.identity와 마찬가지로 Boolean을 평가하기 위해 사용된다.
'Web > Functional Programming' 카테고리의 다른 글
_.identity: 받은 것을 그대로 반환하는 함수 그리고 응용 (0) | 2021.05.26 |
---|