프로그래머스 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은 단순히 배열의 길이만큼 순회하는 것으로 알고 있었는데, 값이 실제로 존재하는 요소에 대해서만 순회한다는 것을 알았습니다.