Здравствуйте! Объясните, пожалуйста, почему не работает данный код?
var arr = new Array(10).map(function (t, iter) { return iter });
console.log(arr);
По логике должен получиться массив [0,1,2,3,4,5,6,7,8,9], но вместо него 10 элементов undefined
https://www.w3schools.com/jsref/jsref_map.asp
Note: map() does not execute the function for array elements without
values.
то есть
map не вызывается для элементов массива без значений.
Можете добавить console.log внутрь функции параметра map, чтобы в этом убедиться.
А вот отсюда https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map :
Due to the algorithm defined in the specification if the array which
map was called upon is sparse, resulting array will also be sparse
keeping same indices blank.
то есть
Из-за определения алгоритма данного в спецификации, если исходный массив - разреженный, полученный массив тоже будет разреженным, с пустыми соответствующими элементами.
var arr = new Array(10) создает массив на 10 элементов, которые ПУСТЫЕ. Что бы заполнить их, можно использовать цикл. Например:
for(let i = 0; i < arr.length; i++){
arr[i] = i;
}
А уже потом Ваш код arr.map(function (t, iter) { return iter });
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости