TIL_011_210202

James·2021년 2월 2일
0

TILs

목록 보기
11/40

배열의 index에 대한 고찰

알고리즘 문제를 하나 풀다가 문득 궁금한 것이 생겼다.

let output = removeExtremes(['where', 'is', 'the', 'longest', 'word']);
console.log(output); // --> ['where', 'the', 'word',]

이렇게 문자열로만 이루어진 배열에서 문자열의 길이가 가장 긴 것과 가장 짧은 것을 빼고 나머지를 Return하는 removeExtremes란 함수를 만드는 문제였다.

처음 내 함수 작성 구상은 for문으로 가장 짧은 문자열, 가장 긴 문자열의 index를 각각 구한 후 array.filter메소드와 indexOf(el)로 배열의 element가 갖는 index가 앞서 for문에서 구한 두 index와 일치하지 않는 것만 true로 골라 내서 return 하는 것이었다.

한참 고민하다가 멘토에게 질문해서 깨달은 것은
배열의 element로 들어있는 문자열들 중에 동일한 값이 들어있다면 문제의 전제였던 길이가 같은 문자열이 있다면, index가 나중인 것을 제거하라고 되어 있는데, indexOf는 index 0부터 시작해서 찾고 찾았으면 다시 index 0으로 돌아와서 검색을 시작한다는 것이다.
즉, indexOf를 이용해서는 길이가 같은 문자열 element들 중 나중에 나온 것을 제거할 수 없다.

아래 Test Code를 보고 알았고 이제 실수하지 않는다.

! 앞으로 Test coding해서 스스로 에러나 버그를 찾으려고 더 노력해야 겠다.

profile
웹개발자 James 입니다.

0개의 댓글