곰재
392
2020-05-30 20:44:13
3
98

안녕하세요! javascript . array reduce 함수에 대해 이해가 잘안갑니다.


안녕하세요! 


매번 많은 도움을 받고 있어서 정말 감사합니다! 해석이 잘안되서 여쭤봅니다.



const search = window.location
const tokens = search.replace(/^\?/, '').split('&')
const returnPath = tokens.reduce((a, b) => {
     const p = b.split('=')
     a[p[0]] = decodeURIComponent(p[1])
     return a;
}, {} )

1. 여기서 serach에 현재 주소 url을 넣습니다.

2. tokens에는 url을 ? \ 등 정규식을 이용해서 빈공간으로 만들고 &을 기준으로 잘라줘요. 그럼 배열이들어가고

3. 여기서 returnPath에 token.reduce 부분이 이해가 가질않아요. 찾아보니 reduce 매개변수  첫번째에는

callback함수가 있다고 하는데 a,b 매개변수를 갖고있는 콜백함수가 지금 보이고 음....

그것외에는 해석이 되질않습니다. reutnrPath에 뭐가들어가나요??


0
0
  • 답변 3

  • gilgilgil
    47
    2020-05-30 20:53:41

    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

    url에 붙어있는 파라매터를 키:밸류 쌍으로 오브젝트에 넣는 코드로 보이네요.

    리듀스가 어떻게 동작하는지를 여기서 설명하는건 말이 안되는 것 같으니 위에 첨부한 mdn의 설명을 잘 읽어보시기 바랍니다.

    0
  • IT공부중
    222
    2020-05-31 00:58:34

    (a, b) 

    a 계속 쓰일 값, b  loop를 둘면서 현재 값, {}  a의 초기값


    return을 한 값이 계속 다음 a로 넘어가고 마지막 return 값이 returnPath로 들어가겠네용

    0
  • siva6
    4k
    2020-05-31 09:41:53 작성 2020-05-31 09:42:43 수정됨
    const search = window.location                              //search -> '?q=test&type=all'
    const tokens = search.replace(/^\?/, '').split('&')         //tokens -> ['q=test', 'type=all']
    const returnPath = tokens.reduce((a, b) => {                //1 : a -> {}, b -> 'q=test'                    | 2 : a -> {'q':'test'}, b -> 'type=all' 
         const p = b.split('=')                                 //    p -> ['q', 'test']                        |     p -> ['type', 'all']
         a[p[0]] = decodeURIComponent(p[1])                     //    a -> {'q':'test'}                         |     a -> {'q':'test', 'type':'all'}
         return a;
    }, {} )                                                     //                                                returnPath -> {'q':'test', 'type':'all'} 
    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.