• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 for반복문 안에 if문 else오류?

for반복문 안에 if문 else오류?

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #28403

    조용우
    참가자

    선생님 구글에 찾아보다 도저히 모르겠어서 헬프 요청합니다!

    포트폴리오용 프로젝트겸 토이프로젝트로 챗봇 같아 보이는 뭔가를 만드는데 하나씩 해보면서 리펙토링하고 발전시켜보려하다 막혀서 질문드립니다!

     

     

     const [currentQuestion, setCurrentQuestion] = useState("");

     const [teachQuestion, setTeachQuestion] = useState(["안녕", "앉아", "춘식아"]);

      const [teachAnswer, setTeachAnswer] = useState(["하이!", "싫어!", "녜~"]);

     

      const answerText = () => {
        for (let i = 0; i < teachQuestion.length; i++) {
          if (currentQuestion === teachQuestion[i]) {
            setCurrentAnswer(teachAnswer[i]);
          } else {
            setCurrentAnswer("???");
          }
        }
      };

     

    이런 코드가 있는데 작동이 안됩니다. 그 지금 방식이 input에 뭔가를 입력하면 입력한 string에 따라 맞는 대답을 보여주는 건데 위 코드가 들어가니 갑자기 실행이 안되서 여러개 만져보다

    else {
            setCurrentAnswer("???");
          }

    이 부분을 빼고 작동 시 다시 작동은 되는데 저 부분이 꼭 필요한 상황입니다.

    for반복문 안에 if문을 위와 같이 사용하면 안되는 건가요?

     

    좀 더 만져보다보니 반복문 안에 i변수 선언을 let으로하면 어레이 마지막 단어에만 반응하고 const로 하면 첫 단어에만 반응하네요 ㅠㅠ

    #28412

    codingapple
    키 마스터

    반복문은 let 변수 쓰면 됩니다

    setCurrentAnswer 라는 함수 정의한부분은 어디있습니까 

    #28432

    조용우
    참가자

     const [currentQuestion, setCurrentQuestion] = useState("");

     const [teachQuestion, setTeachQuestion] = useState(["안녕", "앉아", "춘식아"]);

      const [teachAnswer, setTeachAnswer] = useState(["하이!", "싫어!", "녜~"]);

    const [currentAnswer, setCurrentAnswer] = useState("헤이! 난 춘식이에요!");

      const answerText = () => {
        for (let i = 0; i < teachQuestion.length; i++) {
          if (currentQuestion === teachQuestion[i]) {
            setCurrentAnswer(teachAnswer[i]);
          } else {
            setCurrentAnswer("???");
          }
        }
      };

    이렇게 입니다! 다른 인풋에 값을 입력하면 그 값이 위 teachQuestion에 있는 값이면 그 값의 순서에 맞는teachAnswer을 나오도록 했습니다!

    혹시 이거 

     const answerText = () => {
        for (let i = 0; i < teachQuestion.length; i++) {
          if (currentQuestion === teachQuestion[i]) {
            setCurrentAnswer(teachAnswer[i]);
            return;
          } else {
            setCurrentAnswer("???");
          }
        }
      };

    이렇게 저기 return;을 넣어주니 갑자기 잘 작동이 되는데 무슨 이유인가요? return은 값을 퉤 뱉어주는걸로 알고 있는데 막 구글링하다 넣다보니 되긴했는데 이유를 알고싶습니다 ㅠㅠ

    #28443

    codingapple
    키 마스터

    우선 논리가 이상해보이는데

    1번 답을 맞게 입력해도 반복문 때문에 currentAnswer는 결국 ???가 될 듯 하고 

    마지막 답을 맞게 입력해야 결국 currentAnswer는 마지막답이 되겠군요 

    반복문을 쓰지말고 array안에 내가 원하는 글자가 들어있냐 그런 식으로 물어보면 될듯요 

    #28467

    조용우
    참가자

    어레이 안에 원하는 글자가 들어있냐..감사합니다! 정말 많은 도움이 됐습니다! 선생님의 힘을 얻어 취업 성공하고 감사 인사 드리겠습니다

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠