본문으로 바로가기

프로그래머스 lv1을 정복해보자...! 라는 마음으로 처음부터 풀고 있는데 제가 생각한대로 결과값이 나오지 않는 문제가 나와버렸습니다.

 

다음은 특정 수 x와 길이 n을 받아, x의 배수로 이루어진 배열을 생성하려는 코드입니다.

function solution(x, n) {
    let answer = Array(n);
    return answer.map((_, i) => x * (i + 1));
}

 

분명 주어진 n의 길이를 가진 배열은 생성되었는데 map이 작동하지 않았습니다.

 

 

Array() 생성자 - JavaScript | MDN

Array() 생성자는 새로운 Array 객체를 생성할 때 사용합니다.

developer.mozilla.org

 

const arrayEmpty = new Array(2);

console.log(arrayEmpty.length); // 2
console.log(arrayEmpty[0]); // undefined이지만, 사실 빈 슬롯입니다.
console.log(0 in arrayEmpty); // false
console.log(1 in arrayEmpty); // false

 

Array를 통해 만든 배열은 길이만 가질 뿐  그 안의 값은 빈 슬롯이라고 합니다. 그래서 초기값을 지정해주었습니다.

let answer = Array(n).fill(0);

 

초기값을 지정해주면 문제 코드와 달리 answer의 배열에는 [0, 0, 0]처럼 값이 채워진 상태가 됩니다.

 

기존에 map은 단순히 배열의 길이만큼 순회하는 것으로 알고 있었는데, 값이 실제로 존재하는 요소에 대해서만 순회한다는 것을 알았습니다.