더북(TheBook)

인덱스와 실제 요소를 헷갈리지 마세요! 인덱스는 0부터 시작하는 번호고, 요소는 배열 안에 든 실제 값입니다. 이때 다음 인덱스로 8을 뽑으면 값은 undefined가 됩니다.

[1, 2, 3, 4, 5, 7, 8, 9][8] === undefined

따라서 무작위로 인덱스를 뽑을 때 9라는 고정 숫자를 곱하는 대신, numbers 배열의 길이에 맞춰 곱하는 숫자가 9, 8, 7, 6으로 줄어들어야 합니다. numbers.length를 사용하면 numbers 배열의 길이가 줄어드는 것을 반영할 수 있습니다.

for (let n = 0; n <= 3; n += 1) {
  const index = Math.floor(Math.random() * numbers.length); // numbers 길이에 따라
  answer.push(numbers[index]); 
  numbers.splice(index, 1);
}

파일을 저장하고 웹 브라우저를 새로고침하면서 콘솔을 확인해 보면 undefined가 나오지 않습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.