[JS_Replit] indexOf함수를 사용하지 않고 특정 문자열 인덱스 추출

HUYKSKEE·2022년 7월 29일
0
post-custom-banner

첫번째 사고

  1. getFind함수에 인자를 두개 전달(찾고싶은문자, 문자열)
  2. indexOf를 사용하지 않고 인덱스값을 이용하려면 for문을 사용.
  3. 값이 들어가 빈배열 선언
  4. for문 안에 if문을 사용하고 조건이 참일 때 return되는 값은 빈배열로 push
  5. 조건에 맞는 값이 여러번 빈 배열에 쌓이게 되지만 첫번째로 쌓인 값을 반환하는게 목표
  6. 빈 배열 첫번째 값 return
function getFind(filter, sentence) {

  let result = []

  for (let i = 0; i < sentence.length; i++) {
    if (sentence[i] == filter) {
      result.push(i);
    }else{
      result.push(-1);
  }

  return result[0]
}

const output = getFind('a', 'I am hacker')
console.log(output)

// for문이 다 돌아가면 result에 값이 이렇게 쌓인다.  
//result = [-1, -1,  2, -1, -1, -1,  6, -1, -1, -1, -1]

두번째 사고

  1. for문을 하나만 써서 이렇게 됨을 인지
  2. for문을 두개 써보기로 함.
  3. 그렇다면 참일때 조건을 가진 for문을 먼저 실행하고 거짓일때 조건을 가진 for문을 그다음으로 작성해보자.
  4. 참이면 해당하는 값이 먼저 빈 배열에 쌓일 수 있겠지?
  5. 거짓이면 첫번째 for문을 지나가고 거짓 값이 쌓이겠지?
function getFind(filter, sentence) {

  let result = []

  for (let i = 0; i < sentence.length; i++) {
    if (sentence[i] == filter) {
      result.push(i);
    }
  }

  for (let i = 0; i < sentence.length; i++) {
    if (sentence[i] !== filter) {
      result.push(-1);
    }
  }
  console.log(result)
  return result[0]
}

const output = getFind('a', 'I am hacker')
console.log(output)

// [2,  6, -1, -1, -1, -1, -1, -1, -1, -1, -1] // 참일때 값이 먼저 쌓인다.
// 2  // result[0] = 2

i am hacker라는 문자열에 첫번째 a의 인덱스는 2이기 때문에 빈 배열에 0번째 부터 잘 쌓여서 return 되고 있음을 확인했다.

profile
개가수(개발자 + 가수) 🙏개발자들의 공유 문화를 지향합니다.🤝
post-custom-banner

0개의 댓글