Страницы

Поиск по вопросам

понедельник, 10 февраля 2020 г.

map и undefined

#javascript #массивы


Такой код



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




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

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

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


Ответы

Ответ 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);

Ответ 2



Вообще-то во всём... Присваивание аргументу функции ничего в массиве изменить в принципе не может. На индексах, отсутствующих в массиве map не срабатывает. А у тебя все такие. Надо использовать fill, а не map: console.log(Array(5).fill(7)) Дело не в undefined: console.log([undefined, undefined, undefined, undefined, undefined].map(x => 7))

Комментариев нет:

Отправить комментарий