본문 바로가기

javaScript&jQurey

[javascript] indexOf 의 응용 (중복제거,문자갯수 찾기)

 

indexOf

주어진 문자열 s의 앞에서부터 (index: 0) 지정한 문자가 처음으로 발견되는 위치의 index를 반환한다. 발견되지 않으면 -1을 반환한다.
s.idexOf('a') : 문자열 s의 앞에서부터 a의 위치를 탐색 (defualt : index == 0)
s.idexOf('a', 1) : 문자열 s의 index == 1 부터 a의 위치를 탐색



중복제거(indexOf) 활용 예

let answer = "";
let s = "asdfasdf";

for (let i = 0; i < s.length; i++) {
  //console.log(s[i], i, s.indexOf(s[i]));
  if (s.indexOf(s[i]) === i) answer += s[i];
}
asdf

 

console.log(s[i], i, s.indexOf(s[i])); 출력결과

 

a 0 0
s 1 1
d 2 2
f 3 3
a 4 0
s 5 1
d 6 2
f 7 3

 

즉, s.indexOf(s[i]) === i 인 경우가 s[i]가 첫번째로 발견된 경우이므로 answer에 집어넣는다. answer += s[i]

 

문자열에서 중복 개수 세는 법

let s = "asdfasdf";
let cnt = 0;
let pos = s.indexOf("i");
while (pos !== -1) {
  cnt++;
  pos = s.indexOf("i", pos + 1);
}

문자열 s에 들어 있는 i 문자의 개수를 세는 코드이다.
먼저, 문자열 s에 들어있는 i의 위치를 pos 변수에 넣는다.
pos의 값이 -1이 아니면 while문을 실행해 cnt를 1 증가시킨다.
이번엔 문자열 s에서 pos에 넣은 값보다 1 큰 위치에서부터 i를 찾고 이를 다시 pos에 넣는다.
pos의 값이 -1이 아닐 때까지 while문을 반복한다.
cnt에는 문자열 s에 들어 있는 i 문자의 개수가 담긴다.

 

 

 

 

 

 

출처 : https://velog.io/@gwsyl22/javascript-%EC%A4%91%EB%B3%B5%EC%A0%9C%EA%B1%B0-indexOf