문제
문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다.
입력
인자 1 : arr
string 타입을 요소로 갖는 배열
arr[i].length는 20 이하출력
배열을 리턴해야 합니다.
주의 사항
가장 짧은 문자열의 길이와 가장 긴 문자열의 길이가 같은 경우는 없습니다.
가장 짧은 문자열 또는 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거합니다.입출력 예시
let output = removeExtremes(['a', 'b', 'c', 'def']); console.log(output); // --> ['a', 'b'] output = removeExtremes(['where', 'is', 'the', 'longest', 'word']); console.log(output); // --> ['where', 'the', 'word',]
[내가 작성한 코드 -> 수도 코드까지 작성..]
unction removeExtremes(arr) { // TODO: 여기에 코드를 작성합니다. // 가장 짧은 길이를 찾기위한 수 // 가장 긴 길이를 찾기위한 수 // 가장 짧은 길이문자열의 인덱스값을 저장해줄 변수 // 가장 긴 길이문자열의 인덱스값을 저장해줄 변수 for(let i = 0; i < arr.length; i++){ if(){ // shortestLth에 최대값을 넣어놓고 줄여나간다. // 만약 arr[i].length가 10이면 shortestLth가 10이 되서 다시 반복 끝까지 반복하다보면 shortestLth에는 가장 짧은 길이(수), shortestIdx에는 그 수에 해당하는 인덱스가 저장된다. } if(){ //짧은것 찾는것과 동일한 방법으로 긴 것을 찾는다. } } //그리고 빈 배열을 하나 만들어서 for(let i = 0; i < arr.length; i++){ if(){ //아까 찾은 문자열의 인덱스 값만 제외하고 result 배열에 넣어준다. } } return result; //끝 } }
[레퍼런스 코드]
function removeExtremes(arr) { let shortestLen = 20; let longestLen = 0; let shortestIdx = 0; let longestIdx = 0; for (let i = 0; i < arr.length; i++) { if (arr[i].length >= longestLen) { longestLen = arr[i].length; longestIdx = i; } if (arr[i].length <= shortestLen) { shortestLen = arr[i].length; shortestIdx = i; } } let result = []; for (let i = 0; i < arr.length; i++) { if (i !== shortestIdx && i !== longestIdx) { result.push(arr[i]); } } return result; }