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

JavaScript로 범위 내 자연수 배열 생성하기

문제 정의

JavaScript에서 두 개의 숫자 [a, b](a ≤ b)로 구성된 배열을 입력받는 함수를 작성해야 합니다. 이 배열은 하나의 범위를 나타냅니다.

작성할 함수는 해당 범위에 포함된 모든 자연수를 요소로 가지는 배열을 반환해야 하며, 시작 값과 끝 값 역시 결과에 포함되어야 합니다.

예제 코드

다음은 위 문제를 해결하는 함수 구현 예시입니다.

const range = [6, 45];

const naturalBetweenRange = ([lower, upper] = [1, 1]) => {
    // 시작 값이 끝 값보다 크면 빈 배열 반환
    if(lower > upper){
        return [];
    }
    
    const res = [];
    
    // lower부터 upper까지 반복하며 배열에 추가
    for(let i = lower; i <= upper; i++){
        res.push(i);
    }
    
    return res;
};

console.log(naturalBetweenRange(range));

출력 결과

[ 6, 7, 8, 9, 10,
11, 12, 13, 14, 15,
16, 17, 18, 19, 20,
21, 22, 23, 24, 25,
26, 27, 28, 29, 30,
31, 32, 33, 34, 35,
36, 37, 38, 39, 40,
41, 42, 43, 44, 45 ]

코드 설명

위 코드의 동작 원리를 단계별로 살펴보겠습니다.

1. 구조 분해 할당과 기본 매개변수
함수 매개변수에서 [lower, upper] = [1, 1] 패턴을 사용하여 인자가 전달되지 않았을 경우 기본값으로 [1, 1]을 설정합니다. 덕분에 인자 없이 호출하면 1부터 1까지의 배열인 [1]이 반환됩니다.

2. 유효성 검사
시작 값(lower)이 끝 값(upper)보다 크다면 유효한 범위가 아니므로 빈 배열을 즉시 반환하여 오류 상황을 안전하게 처리합니다.

3. 반복문으로 배열 채우기
for 루프를 사용해 lower부터 upper까지 순회하면서 각 숫자를 push() 메서드로 결과 배열에 추가합니다.

4. 결과 반환
완성된 배열을 반환하며, 이 예제에서는 6부터 45까지 총 40개의 자연수가 포함됩니다.

대안: Array.from() 활용하기

반복문 대신 Array.from() 메서드를 사용하면 더 간결하게 표현할 수도 있습니다.

const naturalBetweenRange = ([lower, upper] = [1, 1]) =>
  lower > upper ? [] : Array.from({ length: upper - lower + 1 }, (_, i) => lower + i);

이 방식은 배열 길이를 지정하고 맵핑 함수로 각 인덱스에 시작 값을 더해 한 줄로 동일한 결과를 얻을 수 있습니다.