Почему недостаточно new Array(x) чтобы создать массив желаемого размера x

Потому что с результирующим массивом невозможно работать так же как с массивом длины X.

Посмотрим на код. Автору понадобилось создать массив в зависимости от ввода пользователя и замапить его элементы. Автор наивно полагал что new Array(x), где x - ввод пользователя будет решением его задачи. Ан нет, и тут сюрпризы.

Для простоты напишем частный случай для массива длины 10, мапим индексы.

const arr = new Array(10)
const b = arr.map((_, i) => i)
console.log(b.join(','))
// expected: 0,1,2,3,4,5,6,7,8,9
// actual: ,,,,,,,,,

Оказыается массивы, созданные через new Array(x) не такие же как массивы, содежимое которых наpushилось.

Код что работатет как ожидается:

const arr = new Array(10)
const b = [...arr].map((_, i) => i)
console.log(b.join(','))
3 лайка