Можно ли создать массив, указав длину и значение элемента массива?
Если вы имеете в виду какой-то предварительно инициализирующий конструктор или операцию заполнения, нет, в JavaScript этого нет.
Если вы знаете, что вам нужны три элемента на момент написания кода, вы можете сделать это:
a = [0, 0, 0];
Это называется инициализатор массива < / а>.
Если вы заранее не знаете (например, при написании кода), насколько большим должен быть массив, вы можете просто заполнить его по мере необходимости:
a = [];
var index;
for (index = 0; index < initialSize; ++index) {
a[index] = 0;
}
Обратите внимание, что вам не нужно заранее выделять место в массиве; массив может «расти» по мере необходимости. (Это может показаться странным, но стандартные массивы JavaScript на самом деле не являются массивами в все, хотя движки JavaScript часто пытаются использовать настоящие массивы для оптимизации, если считают, что могут.)
Но если вы хотите, вы можете заранее сказать двигателю двигателя, какую длину вы хотите, используя:
a = new Array(initialSize);
... а не a = []; выше. (Подробнее об этом ближе к концу.)
При желании для этого можно добавить функцию к объекту Array function:
Array.createFilled(length, value) {
var a = new Array(length); // Or of course, `var a = [];`
var i;
for (i = 0; i < length; ++i) {
a[i] = value;
}
return a;
}
Затем используйте его в различных местах, где вам нужен предварительно заполненный массив:
var a = Array.createFilled(3, 0); // 0,0,0
Боковое примечание: всегда обязательно объявляйте свои переменные, например, укажите var a; где-то перед строкой выше.
Очевидно, что если заранее сообщить движку, какого размера должен быть массив, это позволит лучше оптимизировать, верно? Не обязательно! Это может помочь некоторым движкам (немного), мешать другим (немного) и / или не иметь никакого значения:
person
T.J. Crowder
schedule
24.07.2014
new Array(0,0,0)создает массивa[0,1,2]- нет, он создает массив[0,0,0], который вы ищете. - person nnnnnn   schedule 24.07.2014