▪️ JS중간점검 테스트에서 문자열의 위치를 찾아내는 문제가 나왔다. indexOf()를 쓰면되겠다 생각 했는데 마지막 지문보고 멘붕ㅠ
문제💡
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.
indexOf()
와 search()
사용indexOf()
와 search()
모두 문자열의 위치를 검색하는 함수▪️ 다른함수가 없나 찾아봤더니 같은 기능을 하는 search()라는 함수가 있었다. 두 함수 모두 문자열의 위치를 반환해 주며 문자열이 없을경우 -1을 반환. 왜 헷갈리게 같은 함수를 두개나 만드나... 했는데 차이점이 있긴 있었다.
indexOf()
: 두번째 인자에 찾을 위치를 부여해주어 시작위치를 설정해 줄 수 있다.
search()
: 무조건 첫번째 문자열의 위치를 반환, 시작위치 설정 불가
: 정규식을 사용하여 문자열을 찾을 수 있다.
▪️ 새롭게 알게 된 사실!!!
[]
로 문자하나하나에 접근 할 수 있다.Immutable type (불변데이터)
로써 한번 생성되면 변할 수 없다는 특징을 가지고 있다. function getFind(filter, sentence) {
for (let i in sentence){
if(sentence[i] === filter){
return Number(i)
}
}
return -1
}
// 문자열에 같은 글자가 여러개 있으면 인덱스 값이 여러개
// 반환되려나 라고생각했는데, return을 걸어주었기 때문에
// 제일 처음 찾아내는 인덱스 값만 반환!!
💡포스팅 하려고 코드 다시 실험해보다가 알게된 사실!!!
▶️ for in 으로 index값을 모두 찾아내고 반환되면 type을 string으로 뱉는다.
그러므로 index를 숫자로 반환받으려면Number()
로 다시 바꿔줘야한다.
궁금해서 원조 for문이랑 실험해봤는데 신기😮
동기분이 굉장히 신박한 방법을 알려주셨는데 기억이안난다...😱
생각나면 다시 포스팅
굳 포스팅!!!