Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Создание массива в Javascript

Автор вопроса: user3326265Ответов: 1

Как создать массив с длиной 3 и значением для элемента массива 0. Если я даю длину массива как 3, тогда массив должен быть таким, как показано ниже

  a[0]=0;
  a[1]=0;
  a[2]=0;

Я пробовал этот new Array(3), он создает массив a[,,,] длины 3, а new Array(0,0,0) создает массив a[0,1,2]. Можно ли создать массив, указав длину и значение для элемента массива?

Заранее спасибо

  • Несколько интересных ответов о том, как создать предварительно заполненный массив на этом опубликовать. Andy 24.07.2014
  • and new Array(0,0,0) создает массив a[0,1,2] - нет, он создает массив [0,0,0], который вы ищете. nnnnnn 24.07.2014

javascriptarrays

Ответы

Ответ 1 · рейтинг 5 · T.J. Crowder

Можно ли создать массив, указав длину и значение элемента массива?

Если вы имеете в виду какой-то предварительно инициализирующий конструктор или операцию заполнения, нет, в 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; где-то перед строкой выше.


Очевидно, что если заранее сообщить движку, какого размера должен быть массив, это позволит лучше оптимизировать, верно? Не обязательно! Это может помочь некоторым движкам (немного), мешать другим (немного) и / или не иметь никакого значения:

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы