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