アレイの組み込み方法によるトラブルシューティング


配列の組み込みメソッドを使用して、配列の中で最も短い文字列要素を返します.
重複文の使用を禁止する(for,while)
配列には文字列以外の要素を含めることができます
I/O例
let result = findShortestString([7, 'cat', 9, 'rainbow']);
console.log(result); //'cat'
My Solution Code
function findShortestString(arr) {
  // 배열안의 요소들 중 가장 짧은 길이를 가진 문자열 요소를 리턴해야 된다.
  // 배열안에서 우선 문자열들로 구성된 요소들을 먼저 처리한다.
  // 요소가 문자열일 경우 true를 리턴해서 배열을 반환한다.
  let strArr = arr.filter(function(el) {
    if(typeof el === 'string') {
      return true;
    }
  });

  // 빈 배열을 입력받은 경우, 빈문자열을 리턴
  // 문자열만 담은 배열에서 만약 주어진 배열에 문자열이 없는 경우, 빈 문자열을 리턴
  if(arr.length === 0 || strArr.length === 0) {
    return '';
  }

  // 문자열만 담긴 배열에 reduce() 메서드를 활용
  let shortWord = strArr.reduce(function(acc, cur) {
    //누적값의 길이가 현재값보다 클 경우
    if(acc.length > cur.length) {
      //누적값에 현재값의 길이를 넣어줌
      acc = cur;
    }
    //누적값을 리턴
    return acc;
  }, strArr[0]); //초기값으로 배열의 0번째 요소를 넣어줌

  return shortWord; //가장 짧은 문자열 요소를 리턴
}
Reference Code
function findShortestString(arr) {
  // 매개변수로 들어온 배열을 filter() 메서드를 사용해서 
  // 각각의 요소들의 타입이 'string'일 경우 리턴한다.
  const onlyStrings = arr.filter(function (el) {
    return typeof el === 'string';
  });

  // 빈 배열을 입력받은 경우 빈 문자열 리턴
  if (onlyStrings.length === 0) {
    return '';
  }

  // 각각의 요소들이 string인 배열을 가지고, reduce() 메서드를 사용
  return onlyStrings.reduce(function (acc, cur) {
    //누적값의 길이가 현재값보다 짧을 때 누적값에 짧은 길이를 넣는다.
    if (acc.length <= cur.length) {
      return acc;
    } else {
      //누적값이 길 때 현재값을 리턴한다.
      return cur;
    }
  });
}