[JS] 문자열의 위치검색 방법 3가지_ indexOf() / search() / for 문

하서율·2022년 7월 30일
2

위코드

목록 보기
8/15

▪️ JS중간점검 테스트에서 문자열의 위치를 찾아내는 문제가 나왔다. indexOf()를 쓰면되겠다 생각 했는데 마지막 지문보고 멘붕ㅠ

문제💡
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.


◾️ indexOf()search() 사용

✔️ indexOf()search()모두 문자열의 위치를 검색하는 함수


▪️ 다른함수가 없나 찾아봤더니 같은 기능을 하는 search()라는 함수가 있었다. 두 함수 모두 문자열의 위치를 반환해 주며 문자열이 없을경우 -1을 반환. 왜 헷갈리게 같은 함수를 두개나 만드나... 했는데 차이점이 있긴 있었다.

▶️ 차이점:

indexOf()
: 두번째 인자에 찾을 위치를 부여해주어 시작위치를 설정해 줄 수 있다.

search()
: 무조건 첫번째 문자열의 위치를 반환, 시작위치 설정 불가
: 정규식을 사용하여 문자열을 찾을 수 있다.



◾️ for문 사용

✔️ 자바스크립트에서는 문자열을 배열처럼 접근 가능

▪️ 새롭게 알게 된 사실!!!

  • 자바스크립트에서는 문자열을 배열처럼 []로 문자하나하나에 접근 할 수 있다.
  • 하지만 배열처럼 각 요소(?) 문자(?)들을 변경시키지는 못함.
    • 문자열은 Immutable type (불변데이터)로써 한번 생성되면 변할 수 없다는 특징을 가지고 있다.
  • 고로, for문으로도 index 값을 찾을수 있음 (읽기모드)

첫번째 방법👉

  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문이랑 실험해봤는데 신기😮


두번째 방법👉


동기분이 굉장히 신박한 방법을 알려주셨는데 기억이안난다...😱
생각나면 다시 포스팅

profile
매일 매일 기록하기

2개의 댓글

comment-user-thumbnail
2022년 7월 30일

굳 포스팅!!!

1개의 답글