Не создаётся массив из индексов

320
14 сентября 2017, 19:09

Здравствуйте! Объясните, пожалуйста, почему не работает данный код? 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

Answer 1

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.

то есть

Из-за определения алгоритма данного в спецификации, если исходный массив - разреженный, полученный массив тоже будет разреженным, с пустыми соответствующими элементами.

Answer 2

var arr = new Array(10) создает массив на 10 элементов, которые ПУСТЫЕ. Что бы заполнить их, можно использовать цикл. Например:

for(let i = 0; i < arr.length; i++){
    arr[i] = i;
}

А уже потом Ваш код arr.map(function (t, iter) { return iter });

READ ALSO
Вывод свойств объекта в js

Вывод свойств объекта в js

Имеется объект, нужно вывести все свойства со значениямиРазбирался отдельно со свойством products и запутался в циклах

242
Перестает работать Google Script

Перестает работать Google Script

Использую такой скрипт для занесения даты изменения листа в ячейкуПроблема в том, что скрипт работает не при всех изменениях

256
Пипетка на js , для картинок

Пипетка на js , для картинок

Видел кто то или делал пипетку для изображений на js ? есть изображение(пусть разноцветное) , и нужно допустим узнать какого цвета там больше...

375