function removeExtremes(arr) {
let min = arr[0];
let max = arr[0];
for( let i = 1; i < arr.length; i++) {
if (arr[i].length <= min.length) {
min = arr[i]
}
if (arr[i].length >= max.length) {
max = arr[i]
}
}
return arr.filter((el) => (el !== min) && (el !== max))
}
배열의 요소 중 가장 길이가 짧은 요소가 빈 문자열인 경우에는 중복될 경우 마지막 요소만을 지우는 것이 아니라 모든 빈 문자열을 삭제해서 테스트케이스를 통과하지 못했다.
필터 메소드가 min,max와 요소의 값을 통해서 비교하고 있기 때문에 빈문자열의 경우에는 마지막 요소만을 특정해서 제거하지 못하고 있었다. => 인덱스를 통해서 비교하는 식으로 수정할 필요가 있다.
function removeExtremes(arr) {
let min = arr[0];
let max = arr[0];
let minIdx = 0;
let maxIdx = 0;
for( let i = 1; i < arr.length; i++) {
if (arr[i].length <= min.length) {
min = arr[i];
minIdx = i;
}
if (arr[i].length >= max.length) {
max = arr[i];
maxIdx = i;
}
}
return arr.filter((el, idx) => (idx !== minIdx) && (idx !== maxIdx))
}
minIdx와 maxIdx를 추가로 선언해서 관리해주니 특정한 인덱스만을 제거하는 것이 가능해졌다.