Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

Array

BaselineWidely available *

ОбъектArray, как и массивы в других языках программирования, позволяетхранить коллекцию из нескольких элементов под одним именем переменной и имеет методы для выполнения общих операций с массивами.

Описание

Массивы являются спископодобными объектами, чьи прототипы содержат методы для операций обхода и изменения массива. Ни размер JavaScript-массива, ни типы его элементов не являются фиксированными. Поскольку размер массива может увеличиваться и уменьшаться в любое время, то нет гарантии, что массив окажется плотным. То есть, при работе с массивом может возникнуть ситуация, что элемент массива, к которому вы обратитесь, будет пустым и вернётundefined. В целом, это удобная характеристика; но если эта особенность массива не желательна в вашем специфическом случае, вы можете рассмотреть возможность использования типизированных массивов.

Некоторые полагают, чтовы не должны использовать массив в качестве ассоциативного массива. В любом случае, вместо него вы можете использовать простыеобъекты, хотя у них есть и свои подводные камни. Смотрите постЛегковесные JavaScript-словари с произвольными ключами(англ.) в качестве примера.

Доступ к элементам массива

Массивы в JavaScript индексируются с нуля: первый элемент массива имеет индекс, равный0, а индекс последнего элемента равен значению свойства массиваlength минус 1.

js
const arr = ["первый элемент", "второй элемент", "последний элемент"];console.log(arr[0]); // напечатает 'первый элемент'console.log(arr[1]); // напечатает 'второй элемент'console.log(arr[arr.length - 1]); // напечатает 'последний элемент'

Элементы массива являются свойствами, точно такими же, как, например, свойствоtoString, однако попытка получить элемент массива по имени его свойства приведёт к синтаксической ошибке, поскольку имя свойства не является допустимым именем #"2"] != years["02"]);

Аналогично, к свойствам объекта, являющимся зарезервированными словами(!) можно получить доступ только посредством скобочной нотации:

js
const promise = {  var: "text",  array: [1, 2, 3, 4],};console.log(promise["array"]);

Взаимосвязь свойстваlength с числовыми свойствами

Свойство массивовlength взаимосвязано с числовыми свойствами. Некоторые встроенные методы массива (например,join,slice,indexOf и т.д.) учитывают значение свойстваlength при своём вызове. Другие методы (например,push,splice и т.д.) в результате своей работы также обновляют свойствоlength массива.

js
const fruits = [];fruits.push("банан", "яблоко", "персик");console.log(fruits.length); // 3

При установке свойства в массиве, если свойство имеет действительный индекс и этот индекс выходит за пределы текущих границ массива, движок соответствующим образом обновит свойствоlength:

js
fruits[5] = "манго";console.log(fruits[5]); // 'манго'console.log(Object.keys(fruits)); // ['0', '1', '2', '5']console.log(fruits.length); // 6

Увеличиваем свойствоlength

js
fruits.length = 10;console.log(Object.keys(fruits)); // ['0', '1', '2', '5']console.log(fruits.length); // 10

Однако, уменьшение свойстваlength приведёт к удалению элементов.

js
fruits.length = 2;console.log(Object.keys(fruits)); // ['0', '1']console.log(fruits.length); // 2

Более подробно эта тема освещена на странице, посвящённой свойствуArray.length.

Создание массива с использованием результата сопоставления

Результатом сопоставления регулярного выражения строке является JavaScript-массив. Этот массив имеет свойства и элементы, предоставляющие информацию о сопоставлении. Подобные массивы возвращаются методамиRegExp.exec,String.match иString.replace. Чтобы было проще понять, откуда и какие появились свойства и элементы, посмотрите следующий пример и обратитесь к таблице ниже:

js
// Сопоставляется с одним символом d, за которым следует один// или более символов b, за которыми следует один символ d// Запоминаются сопоставившиеся символы b и следующий за ними символ d// Регистр игнорируетсяconst myRe = /d(b+)(d)/i;const myArray = myRe.exec("cdbBdbsbz");

Свойства и элементы, возвращаемые из данного сопоставления, описаны ниже:

Свойство/ЭлементОписаниеПример
inputСвойство только для чтения, отражающее оригинальную строку, с которой сопоставлялось регулярное выражение.cdbBdbsbz
indexСвойство только для чтения, являющееся индексом (отсчёт начинается с нуля) в строке, с которого началось сопоставление.1
[0]Элемент только для чтения, определяющий последние сопоставившиеся символы.dbBd
[1], ...[n]Элементы только для чтения, определяющие сопоставившиеся подстроки, заключённые в круглые скобки, если те включены в регулярное выражение. Количество возможных подстрок не ограничено.[1]: bB [2]: d

Конструктор

Array()

Создаёт новый объектArray.

Статические свойства

Array[@@species]

Возвращает конструкторArray.

Статические методы

Array.from()

Создаёт новый экземплярArray из итерируемого или массивоподобного объекта.

Array.fromAsync()

Создаёт новый экземплярArray из асинхронно итерируемого, итерируемого или массивоподобного объекта.

Array.isArray()

Возвращаетtrue если аргумент является массивом иfalse в противном случае.

Array.of()

Создаёт новый экземплярArray с переменным количеством аргументов, независимо от количества или типа аргументов.

Свойства экземпляра

Эти свойства определены вArray.prototype и есть у всех экземпляровArray.

Array.prototype.constructor

Функция-конструктор, создающая экземпляр объекта. Для экземпляровArray начальным значением является конструкторArray.

Array.prototype[@@unscopables]

Содержит имена свойств, которые не включены в стандарт ECMAScript до версии ES2015 и которые игнорируются операторомwith.

Собственные свойства каждого экземпляраArray:

length

Отражает количество элементов в массиве.

Методы экземпляра

Array.prototype.at()

Возвращает элемент массива с указанным индексом. Принимает отрицательные значения, для которых отсчёт идёт с конца массива.

Array.prototype.concat()

Возвращает новый массив, который является объединением текущего с другими массивами или значениями.

Array.prototype.copyWithin()

Копирует последовательность элементов внутри массива.

Array.prototype.entries()

Возвращает новый объектarray iterator, который содержит пары ключ/значение для каждого индекса в массиве.

Array.prototype.every()

Возвращаетtrue если для каждого элемента массива переданная в качестве аргумента функция возвращаетtrue.

Array.prototype.fill()

Заполняет все элементы массива от начального индекса до последнего указанным значением.

Array.prototype.filter()

Возвращает новый массив, содержащий все элементы исходного массива, для которых переданная функция вернулаtrue.

Array.prototype.find()

Возвращает значение первого элемента массива, для которого переданная в качестве аргумента функция возвращаетtrue, илиundefined если таких элементов нет.

Array.prototype.findIndex()

Возвращает индекс первого элемента массива, для которого переданная в качестве аргумента функция возвращаетtrue, или-1 если таких элементов нет.

Array.prototype.findLast()

Возвращает значение последнего элемента массива, для которого переданная в качестве аргумента функция возвращаетtrue, илиundefined если таких элементов нет.

Array.prototype.findLastIndex()

Возвращает индекс последнего элемента массива, для которого переданная в качестве аргумента функция возвращаетtrue, или-1 если таких элементов нет.

Array.prototype.flat()

Возвращает новый массив, содержащий элементы всех вложенных массивов до указанной глубины.

Array.prototype.flatMap()

Возвращает новый массив, сформированный вызовом переданной функции с каждым элементом, а затем «уплощённый» на один уровень.

Array.prototype.forEach()

Вызывает функцию для каждого элемента массива.

Array.prototype.includes()

Возвращаетtrue, если массив содержит переданное значение иfalse в противном случае.

Array.prototype.indexOf()

Возвращает первый (наименьший) индекс, по которому может быть найден переданный элемент.

Array.prototype.join()

Объединяет все элементы массива в строку.

Array.prototype.keys()

Возвращает новый объектarray iterator, который содержит ключи каждого индекса массива.

Array.prototype.lastIndexOf()

Возвращает последний (наибольший) индекс, по которому может быть найден переданный элемент или-1 если таких элементов нет.

Array.prototype.map()

Возвращает новый массив, содержащий результат применения переданной функции к каждому элементу исходного массива.

Array.prototype.pop()

Удаляет последний элемент массива и возвращает его значение.

Array.prototype.push()

Добавляет один или более элементов в конец массива и возвращает новое значениеlength массива.

Array.prototype.reduce()

Вызывает указанную функцию-редьюсер для каждого элемента массива (слева направо) для получения единственного значения.

Array.prototype.reduceRight()

Вызывает указанную функцию-редьюсер для каждого элемента массива (справа налево) для получения единственного значения.

Array.prototype.reverse()

Изменяет порядок элементов массивана месте (то есть изменяя исходный массив) на обратный (первый станет последним, последний — первым).

Array.prototype.shift()

Удаляет первый элемент массива и возвращает его значение.

Array.prototype.slice()

Извлекает часть массива и возвращает её в виде нового массива.

Array.prototype.some()

Возвращаетtrue если хотя бы для одного элемента массива переданная в качестве аргумента функция возвращаетtrue.

Array.prototype.sort()

Сортирует элементы массивана месте (то есть изменяя исходный массив) и возвращает массив.

Array.prototype.splice()

Добавляет и/или удаляет элементы массива.

Array.prototype.toLocaleString()

Возвращает локализованную строку, представляющую исходный массив и его элементы. Переопределяет методObject.prototype.toLocaleString().

Array.prototype.toReversed()

Возвращает новый массив с элементами в обратном порядке без изменения исходного массива.

Array.prototype.toSorted()

Возвращает новый массив с отсортированными по возрастанию элементами без изменения исходного массива.

Array.prototype.toSpliced()

Возвращает новый массив с удалёнными и/или заменёнными элементами без изменения исходного массива.

Array.prototype.toString()

Возвращает строку, представляющую исходный массив и его элементы. Переопределяет методObject.prototype.toString().

Array.prototype.unshift()

Добавляет один или более элементов в начало массива и возвращает новое значениеlength массива.

Array.prototype.values()

Возвращает новый объектarray iterator, который содержит значения каждого индекса массива.

Array.prototype.with()

Возвращает новый массив с заменённым значением элемента с указанным индексом без изменения исходного массива.

Array.prototype[@@iterator]()

Псевдоним методаvalues().

Примеры

Пример: создание массива

Следующий пример создаёт массивmsgArray с длиной 0, присваивает значения элементамmsgArray[0] иmsgArray[99], что изменяет длину массива на 100.

js
const msgArray = [];msgArray[0] = "Привет";msgArray[99] = "мир";if (msgArray.length === 100) {  console.log("Длина равна 100.");}

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

js
const fruits = ["Яблоко", "Банан"];console.log(fruits.length);// 2

Доступ к элементу массива по индексу

js
const first = fruits[0];// Яблокоconst last = fruits[fruits.length - 1];// Банан

Итерирование по массиву

js
fruits.forEach(function (item, index, array) {  console.log(item, index);});// Яблоко 0// Банан 1

Добавление элемента в конец массива

js
const newLength = fruits.push("Апельсин");// ["Яблоко", "Банан", "Апельсин"]

Удаление последнего элемента массива

js
const last = fruits.pop(); // удалим Апельсин (из конца)// ["Яблоко", "Банан"];

Удаление первого элемента массива

js
const first = fruits.shift(); // удалим Яблоко (из начала)// ["Банан"];

Добавление элемента в начало массива

js
const newLength = fruits.unshift("Клубника"); // добавляет в начало// ["Клубника", "Банан"];

Поиск номера элемента в массиве

js
fruits.push("Манго");// ["Клубника", "Банан", "Манго"]const pos = fruits.indexOf("Банан");// 1

Удаление элемента с определённым индексом

js
const removedItem = fruits.splice(pos, 1); // так можно удалить элемент// ["Клубника", "Манго"]

Удаление нескольких элементов, начиная с определённого индекса

В этом примере методsplice() используется для удаления из массиваfruits строк"Банан" и"Клубника" с указанием индекса строки"Банан" и количества элементов, которые нужно удалить.

js
const fruits = ["Яблоко", "Банан", "Клубника", "Манго"];const start = 1;const deleteCount = 2;const removedItems = fruits.splice(start, deleteCount);console.log(fruits);// ["Яблоко", "Манго"]console.log(removedItems);// ["Банан", "Клубника"]

Создание копии массива

js
const shallowCopy = fruits.slice(); // так можно создать копию массива// ["Клубника", "Манго"]

Пример: создание двумерного массива

Следующий код создаёт шахматную доску в виде двумерного массива строк. Затем он перемещает пешку путём копирования символа 'p' в позиции (6,4) на позицию (4,4). Старая позиция (6,4) затирается пустым местом.

js
const board = [  ["R", "N", "B", "Q", "K", "B", "N", "R"],  ["P", "P", "P", "P", "P", "P", "P", "P"],  [" ", " ", " ", " ", " ", " ", " ", " "],  [" ", " ", " ", " ", " ", " ", " ", " "],  [" ", " ", " ", " ", " ", " ", " ", " "],  [" ", " ", " ", " ", " ", " ", " ", " "],  ["p", "p", "p", "p", "p", "p", "p", "p"],  ["r", "n", "b", "q", "k", "b", "n", "r"],];console.log(board.join("\n") + "\n\n");// Двигаем королевскую пешку вперёд на две клеткиboard[4][4] = board[6][4];board[6][4] = " ";console.log(board.join("\n"));

Ниже показан вывод:

R,N,B,Q,K,B,N,RP,P,P,P,P,P,P,P , , , , , , , , , , , , , , , , , , , , , , , , , , , ,p,p,p,p,p,p,p,pr,n,b,q,k,b,n,rR,N,B,Q,K,B,N,RP,P,P,P,P,P,P,P , , , , , , , , , , , , , , , , , ,p, , , , , , , , , ,p,p,p,p, ,p,p,pr,n,b,q,k,b,n,r

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-array-objects

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.

View this page on GitHubReport a problem with this content

[8]ページ先頭

©2009-2025 Movatter.jp