• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

안녕하세요 인덱스에 관한 코딩시간 문제를 이렇게 접근해보면 될까요?

21.03.30 16:55 작성 조회수 105

1

indexOf()와 lastIndexOf()로 어디서부터 셀지를 구분해놓은 이유는 그로 인한 차이점이 생기기 때문이다.

나는 이러한 이유가 자바스크립트 엔진의 속도와 관련이 있다고 본다.

예를 들어, 매우 많은 양의 데이터에서 인덱스 번호를 반환하고자 할 때, 뒷쪽에 있는 데이터를 앞에서부터 세어나가면

찾는 데에 시간이 더 오래 걸리므로 데이터 처리 속도가 느려질 수 밖에 없다.

예를 들어, 다음과 같은 코드도

var examNum = new Array;

for (var i = 0; i <= 9999999 ; i++){
  examNum[i] = i;
}

console.log(examNum.indexOf(9999998));  // 9999998을 반환

indexOf()가 아니라 lastIndexOf()로 값을 찾았더라면 훨씬 더 빠르게 값을 반환할 수 있었을 것이다.

그래서 indexOf()와 lastIndexOf() 둘 중 하나만 존재하면 데이터의 쏠림으로 인한 속도 저하가 생길 수 있으므로 그 둘을 구별했다고 본다.

너무 단순하게만 생각한 것 같기도 한데..

다른 아이디어는 잘 떠오르지 않아서 질문드립니다..!

답변 2

·

답변을 작성해보세요.

1

코드의 가독성과 의미적 접근이라고 할까요.
코드가 lastIndexOf()로 작성되어 있으면, 데이터가 순서를 갖고 있으며 index 값이 커질수록 값(데이터)이 커진다는 시맨틱을 갖게 되는데, 이때 데이터가 그렇게 들어와야 한다는 기준에 맞추다 보면, 이에 따른 처리가 동반될 수 있을 수도 있다는 뜻입니다.
항상 최선은 아니라는 뜻입니다.

김연지님의 프로필

김연지

질문자

2021.04.01

아 그렇군요..! 예를 들어 lastIndexOf()를 사용하기로 정해서 수정하기가 좀 힘든 상황이면

특정 데이터를 그렇게 하지 않아도 되는데 일부러 마지막쪽으로 들어가게 해야한다던가..

그런 경우가 생각이 나네요. 예외의 경우도 알려주셔서 감사합니다..!!

1

단순한 것이 아니라(겸손^^), 기본적으로 맞다고 생각합니다. 다만, 주변 환경에 따라 사용 기준이 달라 질 수는 있습니다.
-----------
눈에 나는 것을 적어보면 
var examNum = new Array;
==> 자바스크립트 개발자들은 대부분 var examNum = []; 형태로 작성합니다.

indexOf()와 lastIndexOf()로 어디서부터 셀 지를 구분해놓은 이유는
==> "시작할 지", 시작 기준이라고 할까요.

김연지님의 프로필

김연지

질문자

2021.03.30

감사합니다!!! ㅎㅎ 코드 쓰는 습관도 조금씩 고쳐주셔서 더 나아지고 있는 기분이 들어요!

저 한가지 더 궁금한게 있는데 주변 환경에 따라 사용 기준이 달라진다는 것은 정확히 어떤 의미로 말하신건가요?

무조건 빠른 것이 좋은게 아니라 어떤 요소들을 고려해서 작성하게 되는지 궁금합니다! ㅎㅎ