Я пытаюсь установить значения по умолчанию для неинициализированного массива, используя функцию карты, но, похоже, не работает, какие-либо идеи о том, как устанавливать значения по умолчанию?Array.map, похоже, не работает на неинициализированных массивах
Рассмотрите этот фрагмент кода, который я попробовал в консоли Chrome.
> var N = 10;
> var x = new Array(N);
> x
[undefined x 10]
> x.map(function(i) { return 0;});
[undefined x 10]
Я ожидал, что массив будет инициализирован 0.
+1; проблема в том, что 'map' пропускает * индексы *, которым никогда не присваивалось значение. Сравните 'Object.keys (new Array (2))' (без перечислимых свойств) с 'Object.keys ([undefined, undefined])' (два перечислимых свойства, '0' и' 1'). В первом случае массив не имеет значений, назначенных для любых индексов; во втором случае индексам '0' и' 1' присваивается значение 'undefined'. – apsillers
@ папильеры, вы правы. Чтобы уточнить, 'var x = new Array (5);' просто имеет 'x.length == 5' и' Array.prototype'. Помимо этого, перечислимые ключи не задаются. –
очень крутой трюк - я все еще пытаюсь понять, в чем разница между «новым массивом (5)» против «Array.apply (null, new Array (5))» – Raja