1) 해당 문제를 직접 풀고, 자신의 코드와 레퍼런스 코드를 비교하여 한 줄씩(line by line)으로 설명하되,
2) 이 때, Urclass 고차함수에서 배웠던 배열의 내장 메소드를 사용해야 하고,
3) 사용한 메소드의 작동 방식에 대해서 구체적으로 설명하기
[문제]
배열을 입력받아 배열에서 가장 짧은 길이를 가진 문자열 요소를 리턴해야 합니다.
[입력]
인자 1 : arr
임의의 요소가 담긴 배열
[출력]
string 타입을 리턴해야 합니다.
[주의 사항]
반복문(for, while) 사용은 금지됩니다.
같은 길이의 요소가 있다면 배열의 앞쪽에 있는 요소를 리턴해야 합니다.
배열에는 문자열 외에 다른 요소들이 있을 수 있습니다.
빈 배열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
주어진 배열에 문자열이 없는 경우, 빈 문자열을 리턴해야 합니다.
[예시]
let output = findShortestWord([4, 'two', 2, 'three']);
console.log(output); // --> 'two'
[힌트]
문제를 한 번에 해결하지 말고, 나누어 봅니다.
문자열로만 구성된 배열을 입력받은 경우, 문제가 더 쉬워진다는 것에 주목합시다.
1) 30_findShortestWord 레퍼런스 코드
function findShortestWord(arr) {
const onlyStrings = arr.filter(function (el) {
return typeof el === 'string';
});
if (onlyStrings.length === 0) {
return '';
}
return onlyStrings.reduce(function (acc, cur) {
if (acc.length <= cur.length) {
return acc;
} else {
return cur;
}
});
}
1-1) 나의 코드
if (arr.length === 0) { return '' }
let filteredString = arr.filter(function (el){
if(typeof el === 'string')
return el;
})
return filteredString.reduce(function (acc,cur){
if (acc.length <= cur.length) {
return acc
} else {
return cur;
}
})
}
** 마지막 테스트 케이스에서 [ [1, 2, 4]을(를) 입력받은 경우, 빈 문자열을 리턴해야 합니다] 통과 X