Подтвердить что ты не робот

Каков способ объявления массива в JavaScript?

Я просто изучаю JavaScript и кажется, что существует несколько способов объявить массивы.

  • var myArray = new Array()
  • var myArray = new Array(3)
  • var myArray = ["apples", "bananas", "oranges"]
  • var myArray = [3]

В чем их отличие, и каковы предпочтительные способы?

В соответствии с этот веб-сайт следующие две строки очень разные:

var badArray = new Array(10); // creates an empty Array that sized for 10 elements
var goodArray= [10];          // creates an Array with 10 as the first element

Как вы можете видеть, эти две строки делают две очень разные вещи. если ты хотел добавить более одного элемента, тогда badArray будет правильно инициализирован, так как Javascript тогда будет достаточно умен, чтобы знайте, что вы инициализировали массив, а не указали, сколько элементы, которые вы хотели добавить.

То, что авторы пытаются сказать, это Array(10) создает массив с точно 10 элементами, а [10] создает массив размером undefined с 0-м элементом, равным 10? Или что это значит?

4b9b3361

Ответ 1

Предпочтительный способ - всегда использовать буквенный синтаксис с квадратными скобками; его поведение предсказуемо для любого количества элементов, в отличие от Array. Что еще, Array не является ключевым словом, и, хотя это не реалистичная ситуация, кто-то может легко перезаписать его:

function Array() { return []; }

alert(Array(1, 2, 3)); // An empty alert box

Однако большая проблема заключается в последовательности. Некоторый код рефакторинга может встретить эту функцию:

function fetchValue(n) {
    var arr = new Array(1, 2, 3);

    return arr[n];
}

Как оказалось, требуется только fetchValue(0), поэтому программист удаляет другие элементы и разбивает код, потому что теперь он возвращает undefined:

var arr = new Array(1);

Ответ 2

В первом примере вы создаете пустой массив, как и для var x = []. Второй пример делает массив размером 3 (со всеми элементами undefined). Третий и четвертый примеры одинаковы, они оба создают массивы с этими элементами.

Будьте осторожны при использовании new Array().

var x = new Array(10); // array of size 10, all elements undefined
var y = new Array(10, 5); // array of size 2: [10, 5]

Предпочтительным способом является синтаксис [].

var x = []; // array of size 0
var y = [10] // array of size 1: [1]

var z = []; // array of size 0
z[2] = 12;  // z is now size 3: [undefined, undefined, 12]

Ответ 3

Существует несколько способов создания массивов.

Традиционный способ объявления и инициализации массива выглядит следующим образом:

var a = new Array(5); // declare an array "a", of size 5
a = [0, 0, 0, 0, 0];  // initialize each of the array elements to 0

Или...

// declare and initialize an array in a single statement
var a = new Array(0, 0, 0, 0, 0); 

Ответ 4

Если вы создаете массив, основной функцией которого является длина, а не значение каждого индекса, определение массива как var a=Array(length); является подходящим.

например, -

String.prototype.repeat= function(n){
    n= n || 1;
    return Array(n+1).join(this);
}

Ответ 5

function getValue(i) {
    var arr =[1, 2, 3, 4, 5, 6, 7]; //Declares and initializes array arr 

return arr[i];
}