- Array() constructor
- Syntax
- Parameters
- Exceptions
- Examples
- Array literal notation
- Array constructor with a single parameter
- Array constructor with multiple parameters
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- Array
- Синтаксис
- Описание
- Доступ к элементам массива
- Взаимосвязь свойства length с числовыми свойствами
- Создание массива с использованием результата сопоставления
- Свойства
- Методы
- Экземпляры массива
Array() constructor
The Array() constructor creates Array objects.
Syntax
new Array() new Array(element0) new Array(element0, element1) new Array(element0, element1, /* … ,*/ elementN) new Array(arrayLength) Array() Array(element0) Array(element0, element1) Array(element0, element1, /* … ,*/ elementN) Array(arrayLength)
Note: Array() can be called with or without new . Both create a new Array instance.
Parameters
A JavaScript array is initialized with the given elements, except in the case where a single argument is passed to the Array constructor and that argument is a number (see the arrayLength parameter below). Note that this special case only applies to JavaScript arrays created with the Array constructor, not array literals created with the bracket syntax.
If the only argument passed to the Array constructor is an integer between 0 and 2 32 — 1 (inclusive), this returns a new JavaScript array with its length property set to that number (Note: this implies an array of arrayLength empty slots, not slots with actual undefined values — see sparse arrays).
Exceptions
Thrown if there’s only one argument ( arrayLength ) that is a number, but its value is not an integer or not between 0 and 2 32 — 1 (inclusive).
Examples
Array literal notation
Arrays can be created using the literal notation:
const fruits = ["Apple", "Banana"]; console.log(fruits.length); // 2 console.log(fruits[0]); // "Apple"
Array constructor with a single parameter
Arrays can be created using a constructor with a single number parameter. An array is created with its length property set to that number, and the array elements are empty slots.
const arrayEmpty = new Array(2); console.log(arrayEmpty.length); // 2 console.log(arrayEmpty[0]); // undefined; actually, it is an empty slot console.log(0 in arrayEmpty); // false console.log(1 in arrayEmpty); // false
const arrayOfOne = new Array("2"); // Not the number 2 but the string "2" console.log(arrayOfOne.length); // 1 console.log(arrayOfOne[0]); // "2"
Array constructor with multiple parameters
If more than one argument is passed to the constructor, a new Array with the given elements is created.
const fruits = new Array("Apple", "Banana"); console.log(fruits.length); // 2 console.log(fruits[0]); // "Apple"
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Apr 17, 2023 by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
Array
Массив ( Array ) в JavaScript является глобальным объектом, который используется для создания массивов; которые представляют собой высокоуровневые спископодобные объекты.
Создание массива
var fruits = ['Яблоко', 'Банан']; console.log(fruits.length); // 2
Доступ к элементу массива по индексу
var first = fruits[0]; // Яблоко var last = fruits[fruits.length - 1]; // Банан
Итерирование по массиву
.forEach(function(item, index, array) console.log(item, index); >); // Яблоко 0 // Банан 1
Добавление элемента в конец массива
var newLength = fruits.push('Апельсин'); // ["Яблоко", "Банан", "Апельсин"]
Удаление последнего элемента массива
var last = fruits.pop(); // удалим Апельсин (из конца) // ["Яблоко", "Банан"];
Удаление первого элемента массива
var first = fruits.shift(); // удалим Яблоко (из начала) // ["Банан"];
Добавление элемента в начало массива
var newLength = fruits.unshift('Клубника') // добавляет в начало // ["Клубника", "Банан"];
Поиск номера элемента в массиве
.push('Манго'); // ["Клубника", "Банан", "Манго"] var pos = fruits.indexOf('Банан'); // 1
Удаление элемента с определённым индексом
var removedItem = fruits.splice(pos, 1); // так можно удалить элемент // ["Клубника", "Манго"]
Удаление нескольких элементов, начиная с определённого индекса
var vegetables = ['Капуста', 'Репа', 'Редиска', 'Морковка']; console.log(vegetables); // ["Капуста", "Репа", "Редиска", "Морковка"] var pos = 1, n = 2; var removedItems = vegetables.splice(pos, n); // так можно удалить элементы, n определяет количество элементов для удаления, // начиная с позиции(pos) и далее в направлении конца массива. console.log(vegetables); // ["Капуста", "Морковка"] (исходный массив изменён) console.log(removedItems); // ["Репа", "Редиска"]
Создание копии массива
var shallowCopy = fruits.slice(); // так можно создать копию массива // ["Клубника", "Манго"]
Синтаксис
[element0, element1, . elementN] new Array(element0, element1[, . [, elementN]]) new Array(arrayLength)
Массив в JavaScript инициализируется с помощью переданных элементов, за исключением случая, когда в конструктор Array передаётся один аргумент и этот аргумент является числом (см. ниже). Стоит обратить внимание, что этот особый случай применяется только к JavaScript-массивам, создаваемым с помощью конструктора Array , а не к литеральным массивам, создаваемым с использованием скобочного синтаксиса.
Если конструктору Array передаётся единственный аргумент, являющийся целым числом в диапазоне от 0 до 232-1 (включительно), будет возвращён новый пустой JavaScript-массив, длина которого установится в это число (примечание: это означает массив, содержащий arrayLength пустых ячеек, а не ячеек со значениями undefined ). Если аргументом будет любое другое число, возникнет исключение RangeError .
Описание
Массивы являются спископодобными объектами, чьи прототипы содержат методы для операций обхода и изменения массива. Ни размер JavaScript-массива, ни типы его элементов не являются фиксированными. Поскольку размер массива может увеличиваться и уменьшаться в любое время, то нет гарантии, что массив окажется плотным. То есть, при работе с массивом может возникнуть ситуация, что элемент массива, к которому вы обратитесь, будет пустым и вернёт undefined . В целом, это удобная характеристика; но если эта особенность массива не желательна в вашем специфическом случае, вы можете рассмотреть возможность использования типизированных массивов.
Некоторые полагают, что вы не должны использовать массив в качестве ассоциативного массива. В любом случае, вместо него вы можете использовать простые объекты , хотя у них есть и свои подводные камни. Смотрите пост Легковесные JavaScript-словари с произвольными ключами(англ.) в качестве примера.
Доступ к элементам массива
Массивы в JavaScript индексируются с нуля: первый элемент массива имеет индекс, равный 0 , а индекс последнего элемента равен значению свойства массива length минус 1.
var arr = ['первый элемент', 'второй элемент', 'последний элемент']; console.log(arr[0]); // напечатает 'первый элемент' console.log(arr[1]); // напечатает 'второй элемент' console.log(arr[arr.length - 1]); // напечатает 'последний элемент'
Элементы массива являются свойствами, точно такими же, как, например, свойство toString , однако попытка получить элемент массива по имени его свойства приведёт к синтаксической ошибке, поскольку имя свойства не является допустимым именем JavaScript:
.log(arr.0); // синтаксическая ошибка
Это не особенность массивов или их свойств. В JavaScript к свойствам, начинающимся с цифры, невозможно обратиться посредством точечной нотации; к ним можно обратиться только с помощью скобочной нотации. Например, если у вас есть объект со свойством, названным ‘3d’ , вы сможете обратиться к нему только посредством скобочной нотации. Примеры:
var years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]; console.log(years.0); // синтаксическая ошибка console.log(years[0]); // работает как положено
.3d.setTexture(model, 'character.png'); // синтаксическая ошибка renderer['3d'].setTexture(model, 'character.png'); // работает как положено
Обратите внимание, что во втором примере 3d заключено в кавычки: ‘3d’ . Индексы можно заключать в кавычки (например years[‘2’] вместо years[2] ), но в этом нет необходимости. Значение 2 в выражении years[2] будет неявно приведено к строке движком JavaScript через метод преобразования toString . Именно по этой причине ключи ‘2’ и ’02’ будут ссылаться на два разных элемента в объекте years и следующий пример выведет true :
Аналогично, к свойствам объекта, являющимся зарезервированными словами(!) можно получить доступ только посредством скобочной нотации:
var promise = 'var' : 'text', 'array': [1, 2, 3, 4] >; console.log(promise['array']);
Взаимосвязь свойства length с числовыми свойствами
Свойство массивов length взаимосвязано с числовыми свойствами. Некоторые встроенные методы массива (например, join , slice , indexOf и т.д.) учитывают значение свойства length при своём вызове. Другие методы (например, push , splice и т.д.) в результате своей работы также обновляют свойство length массива.
var fruits = []; fruits.push('банан', 'яблоко', 'персик'); console.log(fruits.length); // 3
При установке свойства в массиве, если свойство имеет действительный индекс и этот индекс выходит за пределы текущих границ массива, движок соответствующим образом обновит свойство length :
[5] = 'манго'; console.log(fruits[5]); // 'манго' console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] console.log(fruits.length); // 6
Увеличиваем свойство length
.length = 10; console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] console.log(fruits.length); // 10
Однако, уменьшение свойства length приведёт к удалению элементов.
.length = 2; console.log(Object.keys(fruits)); // ['0', '1'] console.log(fruits.length); // 2
Более подробно эта тема освещена на странице, посвящённой свойству Array.length .
Создание массива с использованием результата сопоставления
Результатом сопоставления регулярного выражения строке является JavaScript-массив. Этот массив имеет свойства и элементы, предоставляющие информацию о сопоставлении. Подобные массивы возвращаются методами RegExp.exec , String.match и String.replace . Чтобы было проще понять, откуда и какие появились свойства и элементы, посмотрите следующий пример и обратитесь к таблице ниже:
// Сопоставляется с одним символом d, за которым следует один // или более символов b, за которыми следует один символ d // Запоминаются сопоставившиеся символы b и следующий за ними символ d // Регистр игнорируется var myRe = /d(b+)(d)/i; var myArray = myRe.exec('cdbBdbsbz');
Свойства и элементы, возвращаемые из данного сопоставления, описаны ниже:
Свойство/Элемент | Описание | Пример |
---|---|---|
input | Свойство только для чтения, отражающее оригинальную строку, с которой сопоставлялось регулярное выражение. | cdbBdbsbz |
index | Свойство только для чтения, являющееся индексом (отсчёт начинается с нуля) в строке, с которого началось сопоставление. | 1 |
[0] | Элемент только для чтения, определяющий последние сопоставившиеся символы. | dbBd |
[1], . [n] | Элементы только для чтения, определяющие сопоставившиеся подстроки, заключённые в круглые скобки, если те включены в регулярное выражение. Количество возможных подстрок не ограничено. | [1]: bB [2]: d |
Свойства
Значение свойства length конструктора массива равно 1.
Позволяет добавлять свойства ко всем объектам массива.
Методы
Создаёт новый экземпляр Array из массивоподобного или итерируемого объекта.
Возвращает true , если значение является массивом, иначе возвращает false .
Асинхронно наблюдает за изменениями в массиве, подобно методу Object.observe() для объектов. Метод предоставляет поток изменений в порядке их возникновения.
Создаёт новый экземпляр Array из любого количества аргументов, независимо от их количества или типа.
Экземпляры массива
Все экземпляры массива наследуются от Array.prototype . Изменения в объекте прототипа конструктора массива затронет все экземпляры Array .