-
글쓴이글
-
2022년 2월 28일 12:34 #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로 하면 첫 단어에만 반응하네요 ㅠㅠ
2022년 2월 28일 17:58 #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은 값을 퉤 뱉어주는걸로 알고 있는데 막 구글링하다 넣다보니 되긴했는데 이유를 알고싶습니다 ㅠㅠ
2022년 2월 28일 22:07 #28443
codingapple키 마스터우선 논리가 이상해보이는데
1번 답을 맞게 입력해도 반복문 때문에 currentAnswer는 결국 ???가 될 듯 하고
마지막 답을 맞게 입력해야 결국 currentAnswer는 마지막답이 되겠군요
반복문을 쓰지말고 array안에 내가 원하는 글자가 들어있냐 그런 식으로 물어보면 될듯요
-
글쓴이글
- 답변은 로그인 후 가능합니다.