Почему Array.map не работает в массиве неопределенных значений

Это исключительно гибкое упражнение с JavaScript. Я пытаюсь создать массив целых чисел с Javascript без цикла и таким образом:

var a = Array(100).map(function(x, y) { return y + 1 });

Я ожидал бы и массив целых чисел 1 - 100. Вместо этого он остается неопределенным * 100? Я не могу даже console.log изнутри функции карты?

Я понимаю из этого замечательного Post Sequences с использованием JavaScript Array, что ниже делает цель, используя Array.apply, я просто понимаю, зачем это нужно?

var a = Array.apply(0, Array(100)).map(function(x,y) { return y + 1 }); a

Спасибо за любое понимание :)

1 ответ

В основном в целях оптимизации пространства памяти, разреженные массивы занимают меньше места в памяти.

Это виды "флагов" с неопределенным, чтобы вы могли делать такие вещи без разрыва памяти:

var a = [];

a[2014] = 0;
console.log(a.length); // 2015
console.log(a); // [undefined x 2014, 0]

licensed under cc by-sa 3.0 with attribution.