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;
}
});
}