• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

grep function 만들기 오류

19.05.18 23:05 작성 조회수 197

0

제가 jquery에 grep함수를 최대한 함수형 프로그래밍스럽게 바꾸고 있습니다.

제가 지금까지 시도한 결과는 아래와 같은데 이상하게 

```

my_grep([0,1,2,3], function(k){return k<3}, true)

```

이렇게 실행해보면   

```
evalmachine.<anonymous>:16 matches.push( elems[ p ] ); ^ TypeError: matches.push is not a function
```

이런 오류를 뱉어내는데, 이유를 도무지 모르겠습니다. 제 코드는 아래와 같습니다

```
function my_grep(elems, callback, invert) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; let fun = matches => { let r = R.range(0,length); let modify = R.curry( p=>{ let callbackInverse = !callback( elems[ p ], p ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ p ] ); } } ); R.map(modify,r); return matches; }; fun(length); }
```

원래 동작의 의도는 invert가 true면 callback인자의 조건이 false인 배열을 elems중에서 걸러내서 리턴하는 것 같습니다.

답변 1

답변을 작성해보세요.

0

제가 grep 함수를 잘 모르는데, 잠시 보니 filter와 reject을 하나의 함수로 구현한 함수인거 같은데요.

그게 맞다면 아래 코드를 참고해주세요.

https://github.com/marpple/FxJS/blob/master/filter.js

https://github.com/marpple/FxJS/blob/master/reject.js