findShortestWord

Džeko.Log·2021년 2월 25일
0

추가과제

목록 보기
3/3

조건

  • 30_findShortestWord 문제를 직접 풀고, 자신이 푼 코드와 레퍼런스 코드를 비교하여 line by line으로 설명해 주세요
  • Urclass 고차함수에서 배웠던 배열의 내장 매소드를 사용하여야 합니다.
  • 사용한 매소드의 작동 방식에 대해서 구체적으로 설명해야 합니다.

문제

배열을 입력받아 배열에서 가장 짧은 길이를 가진 문자열 요소를 리턴해야 합니다.

코드

function findShortestWord(arr) {
  let filterArr = arr.filter(function(el) {
    if (typeof el === 'string') { 
      // 타입이 스트링인 것들만 필터링
      return true;
    }
  });
  
  if (filterArr.length === 0) { 
    // 빈 배열일 경우 빈 문자열을 리턴
    return '';
  }
  
  let shortLength = filterArr.reduce(function(acc, cur) { 
    if (acc.length > cur.length) { 
      // 누적값의 길이가 현재 값보다 클 경우
      acc = cur; 
      // 누적값에 현재 값을 할당해준다.
    } 
    return acc; 
    // 누적값을 리턴
    }, filterArr[0]) 
  // 초기값 설정
    return shortLength 
  // 가장 짧은 길이를 가진 문자열 요소 리턴
}

Reference

function findShortestWord(arr) {
  const onlyStrings = arr.filter(function (el) {
    return typeof el === 'string';
  });
// 배열의 각 요소가 특정 논리(함수)에 따르면, 사실(boolean)일 때 따로 분류한다(filter).
// 빈 배열 안에 타입 요소가 문자열일 경우만 담아준다.
  if (onlyStrings.length === 0) {
    return '';
  }
// 빈 배열을 받을 경우 빈 문자열을 리턴한다.
  return onlyStrings.reduce(function (acc, cur) {
    // 배열 각 요소를 함수에 따라 원하는 하나의 형태로 응축하는 reduce 메소드를 사용 (현재 각 요소들이 문자열인 배열)
    if (acc.length <= cur.length) {
      // 누적 값의 길이와 현재 값의 길이를 비교
      // 누적 값이 현재 값보다 길이가 짧으면 누적 값에 넣는다.
      return acc;
    } else {
      // 누적값이 길 때 현재 값을 리턴
      return cur;
    }
  });
}

0개의 댓글

관련 채용 정보