배열을 입력받아 배열에서 가장 짧은 길이를 가진 문자열 요소를 리턴하라
입력 : 임의의 요소가 담긴 배열
출력 : string 타입을 리턴해야 합니다
주의사항
- 반복문 사용 금지
- 같은 길이의 요소가 있다면 배열의 앞쪽에 있는 요소를 리턴
- 배열에는 문자열 외에 다른 요소들이 있을 수 있다
- 빈 배열을 입력받은 경우 ,빈 문자열을 리턴
- 주어진 배열에 문자열이 없는 경우, 빈 문자열을 리턴
function findShortestWord(arr) {
const findstring = function (el) {
if(typeof(el) === 'string'){
return el;
}
}
const strArr = arr.map(findstring)
if(arr.length === 0) {
return '';
}
return strArr.reduce(function (acc, cur){
if(acc.length <= cur.length) {
return acc;
} else {
return cur;
}
})
}
중간에 map을 사용하여 문자열만 존재하는 배열을 만들려고 했는데, 계속 오류가 나길래 디버거를 돌려보았더니 string이 아닌 요소는 무시하고 넘어가는 것이 아니라 undefined가 되어 리턴되고 있었다.
arr.length === 0을 조건으로 하다 보니 빈 배열만 걸러내고 찾는 문자열이 없는 배열은 배열 그대로를 리턴하고 있었다.