먼저 문제를 보겠다.
- 배열을 입력받아 배열에서 가장 짧은 길이의 문자열 요소를 return해야 한다.
- 같은 길이의 요소가 있다면 배열의 앞쪽에 있는 요소를 return한다.
- 배열에는 문자열 외 다른 요소가 있을 수 있다.
- 빈 배열 혹은 주어진 배열에 문자열이 없을 경우 빈 문자열을 return한다.
두 번째 주의사항인 if 같은 길이의 배열 시, 먼저 나온 요소 return
그리고 문자열 외 다른 요소가 있을 수 있는 점 등을 고려해야 한다.
function findShortestWord(arr) { // 임의의 요소를 갖는 배열을 인자로 설정
const result = arr.filter(function(a) {
return typeof a === 'string' // 먼저 arr 배열의 요소 a의 타입이 문자열인 경우만을 filtering 한다. -> 문자열이 없는 경우를 배제
})
if (result.length === 0) { // 이후 filtering된 새로운 배열(result)의 길이가 0이라면(빈 배열이라면)
return ''; // 빈 문자열을 return한다.
}
return result.reduce(function(a, b) { // 그 경우들이 아니라면 이제 reduce 메소드를 작성한다.
if (a.length <= b.length) { // a 인자가 다음 인자인 b 의 길이보다 작거나 같다면 -> 두 번째 주의사항인 같은 길이의 요소일 경우 앞쪽 요소 return 을 제시하는 조건이다.
return a; // 먼저 나온 요소인 a를 return하고
} else {
return b; // 그것이 아니라면(b가 더 길다면) b를 return한다.
}
});
}