Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 특정 값을 제외한 무작위 배열 생성하는 방법

문제 소개

두 개의 인수를 받는 함수를 만들어야 합니다. 첫 번째 인수는 반환할 배열의 길이를 나타내는 정수이고, 두 번째 인수는 결과 배열에 포함되어서는 안 되는 값들을 담은 정수 배열입니다.

즉, 0부터 100 사이의 무작위 숫자로 이루어진 배열을 생성하되, 인수로 전달된 배열에 존재하는 값은 절대 포함되지 않도록 해야 합니다.

주의: 생성되는 숫자들 사이에 중복된 값이 있어서도 안 됩니다.

구현 방법

함수 이름을 generateRandom()으로 지정하겠습니다. 전체 코드는 다음과 같습니다.

예제 코드

const absentArray = [44, 65, 5, 34, 87, 42, 8, 76, 21, 33];
const len = 10;
const generateRandom = (len, absentArray) => {
    const randomArray = [];
    for(let i = 0; i < len; ){
        const random = Math.floor(Math.random() * 100);
    if(!absentArray.includes(random) &&
        !randomArray.includes(random)){
            randomArray.push(random);
            i++;
        }
    };
    return randomArray;
}
console.log(generateRandom(len, absentArray));

코드 동작 원리

  • Math.random() * 100을 사용하여 0 이상 100 미만의 무작위 실수를 만든 뒤, Math.floor()로 내림하여 정수로 변환합니다.
  • includes() 메서드로 해당 숫자가 제외 대상 배열(absentArray)에 있는지, 그리고 이미 생성된 배열(randomArray)에 중복되는지 검사합니다.
  • 두 조건을 모두 통과한 숫자만 배열에 추가하고, 이때만 카운터 i를 증가시킵니다. 조건에 맞지 않으면 같은 자리를 다시 시도하므로 최종적으로 원하는 길이의 배열이 완성됩니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

[
    23, 93, 29, 25, 37,
    63, 54, 11, 69, 79
]

무작위 숫자를 기반으로 하기 때문에 실행할 때마다 결과값은 달라지지만, 항상 제외 목록에 포함된 값 없이 중복 없이 원하는 길이만큼의 배열이 생성됩니다.