Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   new Array(n) создает неполноценный массив (https://javascript.ru/forum/misc/58971-new-array-n-sozdaet-nepolnocennyjj-massiv.html)

freeneutron 20.10.2015 16:35

new Array(n) создает неполноценный массив
 
Объясните пожалуйста, почему так?
Например, следующий скрипт
(new Array(1)).map(function(){alert('ok')})

должен вызвать alert('ok') 1 раз, но не делает этого

ksa 20.10.2015 16:53

Встречный вопрос...
Что ты ожидаешь от этого?
Цитата:

Сообщение от freeneutron
new Array(1)


freeneutron 20.10.2015 17:01

Тоже что и от
[null]

рони 20.10.2015 17:27

freeneutron,
перебирающие методы работают с существующими элементами массива иначе нужен простой for

nerv_ 20.10.2015 22:21

freeneutron, попробуй так

new Array(2).fill(1).map(x => alert(x));

FINoM 20.10.2015 23:31

Еще есть такой вот ES3 говнохак:
Array(5).join('*').split('*').map(...);

рони 20.10.2015 23:51

Array(1000).fill(-1);
Array.from({length: 1000}, () => -1);
Array.from({length: 1000}, function() { return -1; }); 
Array.apply(null, {length: 1000}).map(function() {return -1});
Array.apply(null, {length: 1000}).map(() => -1);
Array(1000).join('-1').split('');
var array = [];
for (var i = 0; i < 1000; ++i) {
    array.push(-1);
};
var array = Array(1000);
for (var i = 0; i < array.length; array[i++] = -1);


Инициализация массива в JavaScript

ksa 21.10.2015 08:25

Цитата:

Сообщение от freeneutron (Сообщение 392565)
Тоже что и от
[null]

Уже хорошо. :yes:
Но уже ответили
Цитата:

Сообщение от рони (Сообщение 392568)
перебирающие методы работают с существующими элементами массива иначе нужен простой for


freeneutron 22.10.2015 15:52

Понятно все. Спасибо!


Часовой пояс GMT +3, время: 13:01.