• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

jquery 함수들을 완전한 함수형 프로그래밍으로 바꾸려고 합니다.

19.05.18 14:24 작성 조회수 194

0

jquery 함수들을 완전한 함수형 프로그래밍으로 바꾸려고 합니다.

for loop같은 것들도 모두 함수로 고쳐보고 싶은데 제가 바꾸려는 것이   

 

  each: function( obj, callback ) {

            var length, i = 0;

 

            if ( isArrayLike( obj ) ) {

                length = obj.length;

                for ( ; i < length; i++ ) {

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

                        break;

                    }

                }

            } else {

                for ( i in obj ) {

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

                        break;

                    }

                }

            }

 

            return obj;

        },

이 함수인데 제가 생각하기엔 

 

  each: function( obj, callback ){

length = obj.length;

let fisrt_if = R.curry( 

    i=> {

        R.range(0,length).some(function(i){

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false )

                        return i;

                    }

                );

    });

 

let first_else = R.curry(

    i=>{

          R.keys(obj).some(function(i){

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false )

                        return i;

                        }

                );

    }

);

 

let arraylike = obj =>{

    if ( isArrayLike( obj ) ) 

        return true;

    else

        return false;

}

let main = 

    R.ifElse(

    x=> arrayLike(obj),

        first_if,

        first_else

    )

}

 

밑에 함수가 그럴싸해보이는데 어디가 틀린건지 알 수 있을까요 ?ㅠㅠ

답변 3

·

답변을 작성해보세요.

0

아 문제가 많다기보다요.

조금 더 map, filter, reduce의 각각을 어느상황에 쓰는 것이 좋은지에 대한 연습이 필요하실 것 같습니다.

그래도 만드는 시도를 하시다보면 분명히 보이실 거라고 생각합니다.

감사합니다.

0

최대한 남이 만든게 아닌 제가 직접 만들어보고 싶은데 제 코드는 너무 문제가 많은가요? ㅠㅠ

0

제가 최근에 구현한 each 함수는 아래와 같습니다.

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

ES6이 되면서 obj, arr를 모두 지원하는 each 보다는

'이터러블'을 지원하는 each가 더 좋다고 생각합니다.

감사합니다.