for문을 higher order function으로 바꾸려는데 map이랑 filter사용에 어려움이있습니다

for문을 higher order function으로 바꾸려는데 map이랑 filter사용에 어려움이있습니다

Copy
for ( ; i < len; i++ ) {

    selector += tokens[i].value;

}

 

이 코드를 제가 바꾸기에

Copy
let filter2309 = R.filter(

    i => {

        i<len

    },this

);

R.map(

    i => {

        selector += tokens[i].value;

    }, filter2309

);

이렇게 바꾸었는데 처음 해보는거라 전혀 감이 안옵니다

우선 this가 정확히 무엇인지 모르겠습니다. 구글링해봤는데 caller의 stack안에 있는걸 우선적으로 참조? 한다는 느낌으로 알고 있는데 잘 모르겠습니다.

 

그리고 궁금한게 원래 for문에서 i를 1씩 증가시켜주고있는데 제 코드에선 i를 증가시키지 않고 있나요?

그렇다면 filter와 map을 이용해서 어떻게 higher-order function으로 i를 1씩 증가시키나요?

답변 3개

위의 예제를 보면 map이 for 문 안에서 자동으로 배열을 뽑아냅니다.   즉 map이 자동으로 배열의 인덱스를 증가시켜 줍니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

for ( ; i < len; i++ ) { // 여기가 이상하군요...
    selector += tokens[i].value;
}

 

보통

 

for (i=0 ; i < len; i++ ) { // 이런식으로 i 값을 선언하는데 말입니다.
    selector += tokens[i].value;
}
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

아 물론 i는 위에서 이미 0으로 선언해줬습니다.
빼먹어서 죄송합니다

댓글을 작성하려면 로그인이 필요합니다.

map에 대한 내용 아래를 참조하시고

 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map#for..of%EB%A1%9C_Map_%EC%88%9C%ED%9A%8C%ED%95%98%EA%B8%B0

 

this도 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this

 

그런데 위의 예제에서 this는 어떤 것인지는 전체 예제을 봐야 될것 같습니다.

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그래서 i를 증가시켜주는 부분이 밑에코드에선 어디에 해당하나요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고