[자바스크립트/초보자를 향해] 쓰러뜨려!ZundoCo 청지(후반전)

안녕하세요!좋아.
냉동실 청지 문제에 관하여 지난번 보도에서
"Zen"및 "DO"를 임의로 내보낼 수도 있습니다.
지난번: [JavaScript/초보자 대상]을 쓰러뜨려라!주토코청지(전반)
하지만 청지는 아직 쓰러지지 않았다!
포기하면 경기가 끝나고 계속된다.

'ZundoCo 청지'는 (다시)


임의 출력 "ZEN""DO"
"Zen", "Zen", "Zen", "Zen", "docom"의 정렬이 나타나면
「キ・ヨ・シ!」출력 후 종료

②단계


"Zun", "Zun", "Zun", "docom"을 배열하면 "Kiyoshi!"출력 후 종료


· 우선'이거 배열하면 반응할 거야~'판정하기 위한'이거'배열targetList리액션의 내용을 정의합니다answer.
const targetList = ['ズン', 'ズン', 'ズン', 'ズン', 'ドコ']
const answer = 'キ・ヨ・シ!'
· 다음은 배열이 targetList과 같은지 여부를 판정하는 단계다.
용자가 이곳에서 걸려 넘어졌다.

걸려 넘어진 곳(병아리가 나오지 않는다)

if (randomOutput === targetList) {
   console.log(answer)
}
중요한 것은'무작위로 배열된 내용이 targetList와 같다='
"Zun", "Zun", "Zun", "docomo"라면
'청지!'그가 나타내도록 해라!"
이렇게
"Zen", "Zun", "Zun", "docomo"를 내보낼 때도 뜻을 표시하지 않습니다.
♪ 슬픔에서 멀어져라~
왜?
이유는
변수에 직접 포함된 그룹이 없습니다.
변수에 인용이라고 불리는 배열 위치가 기록되어 있다
수조의 실체는 다른 곳에 있다.
JavaScript 변수 및 정렬 및 참조 정보
이로써 상술한 if문 중의 비교에서
배열 내용의 값을 비교하는 것이 아니라 참조처(보관장소)를 비교합니다.randomOutputtargetList는 원래 보관장소가 다르다.
(따로따로 만들었으니까)
내용의 값이 아니라'서로 비교적 보관하는 곳'이기 때문이다.
결과는else입니다.이런 명칭도 뜻대로 되지는 않는다.

해결책


사용하기로 결정join().
※ 애초에 제이슨(json)을 사용하는 방법이 기재됐는데, 삼엄하기 때문에
평론의 건의에 따라 수정하였다.감사합니다!
if (randomOutput.join() === targetList.join()) {
   console.log(answer)
}
방법은 수조(또는 수조풍 대상)의 모든 요소를 순서대로 조합한 문자열이다.
구분자는 쉼표나 지정한 문자열입니다.
Array.prototype.join() - MDN web docs join()효과, 탈색치를 서로 상쇄randomOutput "Zun", "Zun", "Zun", "Zun", "docomo"로 내보낼 때
평안하게 "청(淸)·청(淸)!"이라고 표현했다.
너무 좋아요
그나저나 "청·청·서!"라고 외치면 언더컴 시간 종료를 약속한다.
for와 달리 횟수를 결정하지 않은 순환 처리이기 때문에while 문장을 사용합니다.
(해당되는 경우에만 중복 처리를 하고 해당되지 않으면 처리를 종료합니다.)
그리고 이번에는'랜덤 배열'을 먼저 해야 돼요.
do...while 을 사용합니다.
do...테스트 조건이 가짜로 평가될 때까지 지정한 문장을 순환해서 실행합니다.조건은 집행문 뒤에 평가한다.
결과적으로 지정된 문장은 적어도 한 번 집행된다.
do...while - MDN web docs
■ do: 무작위 배열randomOutput 생성 및 출력
■while: 생성된 배열과 targetList을 비교하고 일치하지 않으면 do를 다시 실행합니다
(일치하지 않는 경우 반복 처리→일치후 종료)
do {
    // wordListのインデックス[0] or [1]をランダムで生成し、結果をrandomOutputの要素へ代入する処理を
    // 要素数(5個)分ループさせる
    for (let i = 0; i < randomOutput.length; i++) {
      randomOutput[i] = wordList[Math.floor(Math.random() * wordList.length)]
    }
    console.log(randomOutput) // ランダムに生成された配列を表示
    // トリガーとなる配列が現れるまで処理をループ
} while (randomOutput.join() !== targetList.join())

답변 요약(코드 전체)

function kiyoshi() {

  const wordList = ['ズン','ドコ'] // ランダムで表示するワード候補2種
  const elementsLength = 5
  const randomOutput = [...Array(elementsLength)] // 未定義の要素 × 5個の配列
  const targetList = ['ズン', 'ズン', 'ズン', 'ズン', 'ドコ'] // トリガーとなる配列
  const answer = 'キ・ヨ・シ!' //トリガーとなる配列が現れたら表示させるワード

  do {
    // wordListのインデックス[0] or [1]をランダムで生成し、結果をrandomOutputの要素へ代入する処理を
    // 要素数(5個)分ループさせる
      for (let i = 0; i < randomOutput.length; i++) {
        randomOutput[i] = wordList[Math.floor(Math.random() * wordList.length)]
      }
      console.log(randomOutput) // ランダムに生成された配列を表示
      // トリガーとなる配列が現れるまで処理をループ
  } while (randomOutput.join() !== targetList.join())
  // トリガー配列が現れたらループから抜けてanswerを表示させる
  console.log(answer)

}
(당초 while에 썼던 곳에서 이번에는 평론을 통해 조언을 얻었다
도...while로 수정합니다.감사합니다.
우리의 전투는 지금부터 시작된다!
끝까지 읽을 수 있어서 나는 매우 기쁘다.
감사합니다.

좋은 웹페이지 즐겨찾기