map и undefined

357
27 апреля 2017, 15:39

Такой код

x = new Array(5); 
y = x.map((item) => item = 7); 
console.log(y);

ничего не сделает(выведет 5 undefined);

не если задать массив через цикл то все ОК;

в чем проблема?

Answer 1

map обходит массив только по существующим элементам.

В данном случае будет создан массив с 5 дырками. Поэтому применение map здесь ничего не даст.

Кроме того, для заполнения массива, map использовать неверно. Вместо него, лучше использовать fill

x = new Array(5); 
x.fill(7); 
console.log(x);

Если же заполнять массив нужно не константным объектом, а зависящим, например, от индекса, можно воспользоваться функцией Array.from

x = Array.from({ 
  length: 5 
}, (el, index) => index); 
console.log(x);

Answer 2

Вообще-то во всём...

  1. Присваивание аргументу функции ничего в массиве изменить в принципе не может.
  2. На индексах, отсутствующих в массиве map не срабатывает. А у тебя все такие.
  3. Надо использовать fill, а не map:

    console.log(Array(5).fill(7))

  4. Дело не в undefined:

    console.log([undefined, undefined, undefined, undefined, undefined].map(x => 7))

READ ALSO
Вставить HTML код в ячейку с помощью Javascript

Вставить HTML код в ячейку с помощью Javascript

Доброго времени суток, прошу, помогите решить проблему, у меня есть скрипт, который берет данные из этих инпутов:

476
Прелоадер для главной страницы

Прелоадер для главной страницы

Есть главная страница и несколько внутреннихНа главной странице есть прелоадер, который корректно отображается

281