작성
·
266
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가 더 좋다고 생각합니다.
감사합니다.