일상의 기록/🌷DAILY 회고록 : 코드스테이츠

[230314] 고차함수 : map(), filter(), reduce()

감귤밭호지차 2023. 3. 14. 17:49

🍀 오늘의 날짜 : 23년 03월 14일 
🍀 오늘의 주제 : 고차함수

 

🔖 28. 문자열의 요소를 갖는 배열을 입력 받아, 가장 긴 문자열의 길이를 리턴. 

# 옳은 답

 

 

# 왜 reduce문 안의 if문에서 .length를 붙여서 return을 하면 'tr'의 길이를 출력 하는 것일까요?

let arr = ['one', 'two', 'tr'];
function getLong(arr) {
  if (arr.length !== 0) {
    return arr.reduce(function (acc, cur) {
      if (acc.length >= cur.length) {
        console.log('acc  ' + acc.length + '  ' + acc);  // acc 3 one
        console.log('cur  ' + cur.length + '  ' + cur);  // cur 3 two
        console.log('=========================');
        return acc.length;
      } else {
        console.log('cur  ' + cur.length + '  ' + cur);  // cur 2 tr
        console.log('acc  ' + acc.length + '  ' + acc);  // acc undefined 3
        return cur.length;
      }
    });
  } else {
    return 0;
  }
}

console.log(getLong(arr));  // 2

 

 

💡    의문   💡

console을 따로 돌려보았을 때,  if문 첫 번째에서, one, two가 서로 비교하고 다음 if문으로 내려와서 tr이 return 됩니다. 

왜 if문 조건을 걸었는데도 else 문까지 내려가는 걸까요?? 

 

 

 

 

 

🔖 32.이차원 배열 일차원 배열로 바꾸기 : concat(), [ ... spread ]

시도 방법 : 이중 filter 걸어서 무한 이차원 배열만 나오는 개미 지옥에 갇힘.

해결 방법 : reduce 에서 합병이나, 흩뿌려서 1차원 배열로 만든 다음 나중에 원하는 조건을 걸면 됨. 

 

 

# 제가 푼 방법 처럼 늘여서 나열해도 되지만 두 번째 코드 처럼 한 줄로 깔끔하게 정리도 가능함. 

 

참고 블로그 

 

 

 

 

 

# filter 는 거름 필터 
# map 은 뽑아서 새로운 객체 생성 
# reduce 는 차례로 누적

🌱 추가 공부 필요 내역                                           

🔹메서드 내장 함수 (find, sort)

🔹

 

🌱 도움이 될 만한 사이트 추천                    

🔹

🔹

 

🌱  관련 정보 정리 글                                   

🔹

🔹