Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Почему Array(10).map(...) не работает?
@Boris009

Почему массив с undefined не работает с методом map?

Почему массив с undefined не работает с методом map?
Цель - создать простым путём массив из большого количества элементов и наполнить их после значениями через метод.

const a = new Array(100)

const r = a.map(item => {
   console.log(item) Здесь консоль лог не срабатывает
   return 1
})

console.log(r) вывод массива с кучей undefined
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Простой 1 комментарий
Ответы на вопрос 2
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
В первой же ссылке в гугле: https://stackoverflow.com/questions/60346825/why-d...
With map, it is possible to say: "As you step through the array, if you encounter an index that has no property, leave that property similarly unset in the output array." For all existing properties, output indices will still correspond to their input indices, and the missing properties are skipped in both the input and output.

Array.prototype.map
Repeat, while k < len

        Let Pk be ! ToString(k).
        Let kPresent be ? HasProperty(O, Pk).
        If kPresent is true, then
            Let kValue be ? Get(O, Pk).
            Let mappedValue be ? Call(callbackfn, T, « kValue, k, O »).
            Perform ? CreateDataPropertyOrThrow(A, Pk, mappedValue).
        Increase k by 1.

Т.е. map() пропускает пустые, не инициализированные значения в массиве. Так что просто используйте метод fill().
Ответ написан
Lynn
@Lynn
nginx, js, css
методы map/foreach/filter и т.п. не работают с несуществующими элементами массива. Это явно написано в спецификации.

https://developer.mozilla.org/en-US/docs/Web/JavaS...
callbackFn is invoked only for array indexes which have assigned values. It is not invoked for empty slots in sparse arrays.


Используй метод fill или статический метод Array.from (хотя это больше похоже на хак)

const a = Array(1000).fill(1);
или
const a = Array.from({length:1000}, () => 1);
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы