[TIL]210224

박성진·2021년 2월 24일

배열을 입력받아 배열에서 가장 짧은 길이를 가진 문자열 요소를 리턴

나의코드

function ShortestWord(arr) {
  // mostShort라는 변수에 가장 큰 값을 할당하였다.
  let mostShort = 'Number.MAX_VALUE'
  // 빈 배열을 입력받는 경우 빈 문자열을 리턴하도록 해주었다.
  if(arr.length === 0) {
    return ''
  }
  // map메소드를 이용하여 요소가 문자열인 것들만 아래의 조건문을 실행하여 mostShort라는 변수에 길이가 가장 적은 요소를 할당해주었다.
  arr.map(function(el) {
    if(typeof el === 'string') {
      if(mostShort.length > el.length) {
        mostShort = el
      }
    }
  })
  // 만약 mostShort의 값이 여전히 'Number.MAX_VALUE'(가장큰수) 일경우 배열에 문자열이 없다는 뜻이므로 빈 문자열을 리턴한다.
  if(mostShort === 'Number.MAX_VALUE') {
    return ''
  }
  // mostShort의 값이 변경되었다면 그값을 리턴한다.
  return mostShort
}

레퍼런스

function findShortestWord(arr) {
  // filter메소드를 이용해 onlyStrings라는 변수에 문자열인 요소들만 담아준다.
  const onlyStrings = arr.filter(function (el) {
    return typeof el === 'string';
  });
// onlyStrings의 길이가 0이라면 즉, 문자열이 없다면 빈배열을 리턴한다.
  if (onlyStrings.length === 0) {
    return '';
  }
// onlyStrings에 요소가 있다면 reduce메소드를 이용하고 초기값을 설정하지 않았으므로 acc에 첫번째요소, cur에 두번째 요소가 할당된다.
  return onlyStrings.reduce(function (acc, cur) {
    // 만약 acc의 길이가 cur보다 작다면 acc의 값은 그대로 유지되고 cur은 그다음요소값으로 변경하여 다시 비교하는데 더이상비교할요소가 없다면 acc값을 리턴한다.
    if (acc.length <= cur.length) {
      return acc;
      // 만약 cur의 길이가 더 작다면 acc값에 현재cur값으로 변경하고 cur에는 그다음요소값으로 변경하여 다시 비교하는데 더이상비교할 요소가 없다면 cur값을 리턴한다.
    } else {
      return cur;
    }
  });
}

0개의 댓글