본문 바로가기
카테고리 없음

indexOf()

by rami_ 2022. 1. 15.
        let ex = 'hello world';
        console.log(ex.indexOf('e'));

indexOf()는 해당 문자열이 몇번 인덱스에 있는지 찾아줌.

만약 문자열에 존재하지 않을 경우 -1을 반환함.

 	let strike = 0;
    let ball = 0;
    for(let i=0; i<answer.length; i++){ //answer는 랜덤한 3자리 수
        const index = myNumber.indexOf(answer[i]); //myNumber는 input을 통해 받은 수
        if(index > -1){
         if(index === i){
            strike += 1;
        }
        else{
            ball += 1;
        }
        }
    }

answer의 1번째 인덱스의 문자열이 myNumber의 문자열에 존재하지 않으면 -1이 index에 할당, 존재하면 1이상의 수가 할당됨.

만약 index가 -1보다 크면(그러면 answer의 문자열 중 하나(혹은 그 이상) 와 myNumber의 문자열 중 하나(혹은 그 이상)이 일치한다는 것을 의미) 그 중 index와 i (indexnumber)가 일치할경우(문자열도 일치하지만 인덱스의 번호도 일치할 경우) strike에 +1을 해서 할당. 그렇지않을경우(문자열이 일치하긴하지만 인덱스의 번호는 일치하지 않음) ball에 +1을 하여 할당함.

 

myNumber 123 이고 answer가 144이면

myNumber.indexOf(answer[0]=1); 1이 myNumber에 있으면 index에 index번호가 할당될 것이며 없으면 -1이 할당됨.

결국 index===i 부분은 myNumber의 인덱스와 answer의 인덱스의 번호가 일치하는지 보는것.

 

 

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; } //랜덤한 3자리 숫자 만들기

button2 = document.querySelector('button2');
button3 = document.querySelector('button3');
const $h = document.querySelector('#h'); 
var answer = getRandomInt(100,999); 
const inputNumber = document.getElementById('inputNumber1');
document.getElementById("button2").onclick = function confirm(){
      var myNumber = document.getElementById("inputNumber1").value; //input의 값만 .value로 저장할 수 있다.
      if(myNumber.length!==3){
    alert("다시입력해주세요");}

    let strike = 0;
    let ball = 0;
    for(let i=0; i<answer.length; i++){
        const index = myNumber.indexOf(answer[i]);
        if(index > -1){
         if(index === i){
            strike += 1;
        }
        else{
            ball += 1;
        }
        }
    }
    
$h.append(`strike: ${strike}, ball: ${ball}`);
    }

마지막 $h부분을 추가해 화면에 보일 수 있도록 함. $(` ` )안에 작성해 넣는것은 jquery라고 함. 

jquery를 공부해야할듯.

`<-이거는 'ㄷ'+한자키 하면 나옴.

 

document.getElementById('button3').onclick = function restart(){
    location.reload();    //재시작버튼을 누르면 다시 웹페이지 실행.
}

재시작버튼을 누르면 다시 웹페이지를 실행하도록 했는데 중요한건 이걸 10번만 하게해야하며

strike와 ball부분이 누적이 되어야 하는데 내가 짠 코드는 그렇지 않음. 

 

+) 새롭게 알게된 규칙.

하나의 랜덤한 3자리 숫자가 출력되면 그것을 10번동안 맞추는 거였음.

내일은 이부분을 해결해보자