Учимся индексировать массивы в js , удалять и добавлять их элементы.
Массив в JavaScript — это глобальный объект, предназначенный для хранения списка значений.
Он похож на другие переменные тем, что может хранить данные любого типа. Но у массива есть одно важное отличие от переменной: в нём может одновременно храниться больше одного элемента.
Массив — это упорядоченный набор значений. Каждое значение называется элементом и имеет свой номер, который называется индекс.
Элемент внутри массива может быть любого типа. Причём элементы одного массива могут быть разных типов: числа, строки, логические элементы и даже объекты или другие массивы.
Порядок элементов массива отсчитывается с 0 . Получается, что в массиве всегда будет смещение индекса на единицу: у первого элемента будет индекс 0 , у второго 1 , и т.д.
Вот пример массива с элементами различных типов:
Индекс | 0 | 1 | 2 | 3 |
Значение | «Супермэн» | 84 | true | [«Бэтмэн», «Робин»] |
Создание (объявление) массива
Массивы очень удобны, потому что в них можно хранить столько данных, сколько нужно. Максимально возможный размер js -массива — 2 32 элемента.
Нужно сказать JavaScript , что мы хотим создать именно массив. Для этого есть два варианта: значение в квадратных скобках или ключевое слово new .
Короткая запись: при помощи квадратных скобок
Заключённый в квадратные скобки список значений, разделённых запятыми.
Содержимое массива определяется тем, что находится между квадратными скобками. При этом каждое значение отделяется запятой.
Значения задаются так же, как и простые переменные, то есть строки нужно объявлять заключёнными в кавычки и т.д.
Чтобы объявить пустой массив, оставьте скобки пустыми:
Длинная запись: при помощи конструктора Array()
Ключевое слово new говорит JavaScript создать новый массив, значения которого передаются как параметры.
Если вы заранее знаете, сколько элементов будет в вашем массиве, можно сразу передать это значение в конструкторе.
Выражение, приведенное выше, создаст пустой массив, состоящий из 80 слотов со значениями undefined .
Объявление пустого массива:
Доступ к элементам массива
С помощью индекса каждого элемента можно работать с любыми данными в массиве, обращаясь к ним при помощи оператора [] :
В массиве может быть несколько уровней, то есть каждый элемент может сам быть массивом. В итоге получится двумерный js -массив . Как же обратиться к этим массивам, которые располагаются внутри других — « многомерным массивам »?
Для примера давайте рассмотрим массив, представляющий семью. Дети из этой семьи записаны отдельным массивом внутри главного:
Можно представить его следующим образом:
0 | 1 | 2 | ||
Мардж | Гомер | 0 | 1 | 2 |
Барт | Лиза | Мэгги |
Что делать, если мы хотим обратиться к значению « Лиза »? Можно обозначить позицию « Лизы » оранжевым: это индекс 1 внутри массива, расположенного на индексе 2 главного массива:
0 | 1 | 2 | ||
Мардж | Гомер | 0 | 1 | 2 |
Барт | Лиза | Мэгги |
Для обращения к значению « Лиза »:
Так можно продолжать практически бесконечно, что позволяет хранить в массивах вложенные друг в друга наборы данных и обращаться к ним при помощи индексов.
Добавление элементов в массив
Мы разобрались, как обращаться к элементам массива при помощи соответствующих им индексов. Похожим образом можно добавлять (или изменять) элементы, объявляя, например:
В примере, приведенном выше, я добавил индекс 2 со значением « Джулиет », которого до этого не было.
Что произойдёт, если я объявлю элемент с индексом, перед которым нет других элементов? Массив сам создаст все недостающие элементы и присвоит им значение undefined :
Узнать какова длина js -массива можно, воспользовавшись свойством length . В примере, приведенном выше, в массиве шесть элементов, и для трёх из них не было задано значение — они обозначены как undefined .
Метод push()
С помощью метода push() можно добавить в js -массив один или несколько элементов. Push() принимает неограниченное количество параметров, все они будут добавлены в конец массива.
Метод unshift()
Метод unshift() работает также как и push() , только добавляет элементы в начало массива.
Удаление элементов массива
Методы pop() и shift()
Методы pop() и shift() удаляют последний и первый элемент массива, соответственно:
Метод splice()
С помощью метода splice() можно удалять или добавлять элементы в массив, при этом точно указывая индекс элементов.
В следующем примере метод splice() добавляет два элемента, начиная с индекса 2 ( то есть с третьего элемента ):
Первый параметр метода splice() — индекс. Он указывает, на какой позиции нужно добавить/удалить элементы. В нашем примере мы выбрали индекс 2 ( со значением «апельсин» ).
Второй параметр — количество элементов, которые требуется удалить. Мы указали значение 0, поэтому ничего не удалится.
Следующие параметры — необязательные. Они добавляют в массив новые значения. В нашем случае нужно добавить «дыню» и «банан», начиная с индекса 2.
Чтобы удалить один элемент массива js на индексе 2, нужен следующий код:
Стоит также сказать о методе slice() , который тоже удаляет значения из массива, но не изменяет оригинальный массив, а возвращает новый.
Данная публикация представляет собой перевод статьи « Work with JavaScript arrays like a boss » , подготовленной дружной командой проекта Интернет-технологии.ру
Есть массив, например:
- Как добавить элемент в массив?
- Как удалить элемент массива?
1 ответ 1
Добавление
Array.prototype.push(element1, . elementN) [MDN] [спецификация] добавляет элемент(ы) в конец массива. Возвращает новую длину массива.
Array.prototype.unshift(element1, . elementN) [MDN] [спецификация] добавляет элемент(ы) в начало массива. Возвращает новую длину массива.
Array.prototype.splice(start, deleteCount[, item1[, item2[, . ]]]) [MDN] [спецификация] изменяет содержимое массива, удаляя элементы и/или добавляя новые. Возвращает массив удалённых элементов.
Можно изменить свойсто .length массива, чтобы добавлять элементы undefined в конец.
Удаление
Array.prototype.pop() [MDN] [спецификация] удаляет последний элемент массива. Возвращает удалённый элемент.
Array.prototype.shift() [MDN] [спецификация] удаляет первый элемент массива. Возвращает удалённый элемент.
Array.prototype.splice(start, deleteCount[, item1[, item2[, . ]]]) [MDN] [спецификация] изменяет содержимое массива, удаляя элементы и/или добавляя новые. Возвращает массив удалённых элементов.
Можно изменить свойсто .length массива, чтобы удалять последние элементы.
Добрый день! Продолжим знакомиться с массивами в JavaScript. В предыдущем посте я описал лишь часть методов для работы с массивами.
Здесь мы поговорим о добавлении, удалении элементов массива. О переворачивании и сортировке массива, а так же о нарезке, замене и комбинировании массивов.
Добавление элементов в массив.
Вы можете использовать свойство length для добавления новых элементов в массив:
Это сработает, т.к. элементы массива нумеруются с нуля, а length на единицу больше. Length всегда эквивалентно index + 1, поэтому очень легко добавить новый элемент в конец массива. Странно, но вы можете добавить элемент на позицию, которая намного больше, чем длина самого массива:
Как показано в комментариях, будет добавлено 95 пустых слотов и элемент «Lindsey Buckingham» в конец массива. После этого мы получим длину 100. Еще один способ добавить новый элемент в массив — использовать метод push():
Метод push() всегда возвращает новую длину массива (в нашем случае 5). Добавить элемент можно с помощью splice():
Когда второй аргумент 0, то это означает, что ни один элемент не будет удален, а поэтому любые последующие аргументы будут добавлены в массив в позицию, указанную в первом аргументе.
Удаление элементов из массива
Удалить элемент немножко сложнее, чем его добавить. Чтобы удалить элемент из конца массива, можно использовать pop():
Метод pop() всегда удаляет последний элемент в массиве и возвращает его.
Вы так же можете использовать splice() метод:
В отличии от метода splice(), который используется для добавления элементов, здесь вторым аргументом идет 1, которая говорит, что мы хотим удалить элемент с индексом 2 (или 3-ий по счету). В данном случае удалился элемент «lupin».
Вы можете удалить элемент массива используя оператор delete:
Первое важное замечание: delete() не изменяет длину массива после удаления элемента (даже, если это был последний элемент в массиве). Второе: delete() изменяет значение удаляемого элемента на undefined, поэтому при обращении myArray[1] = undefined.
Хороший способ удалить элемент из массива — использовать John Resig’s Array.remove. Ниже пример использования, взятый с его страницы:
Возможно вы захотите посмотреть решение by Viral Patel, одну из функций в Underscore.js, или jQuery’s grep().
Дополнительно, в JavaScript есть метод shift(), который удаляет первый элемент в массиве и возвращает его значение. Посмотрим код:
С помощью метода shift() мы удалили элемент, но сохранили его значение в нашей переменной firstItem. Длина массива изменилась с 4 на 3.
Этот метод может быть полезен вместе с методом push(). Используя их вместе мы можем эффективно выстраивать очередь элементов в массиве. Мы сохраняем длину массива удаляя элемент с начала и добавляя новый в конец.
Наоборот, мы можем использовать метод unshift() для добавления элемент в начало массива:
Используя метод unshift() с методом pop(), вы можете создавать очереди в обратную сторону, добавляя элементы в начало и удаляя с конца массива.
Переворачивание и сортировка элементов массива.
Чтобы перевернуть элементы в массиве, мы можем использовать reverse():
Сортировать элементы массива в алфавитном порядке возможно с помощью метода sort():
Но это не будет работать с числами.
Если нужно отсортировать числа, то можно использовать следующий код:
Как показано выше, с помощью простой функции, вставленной в sort(), массив, содержащий числа, будет отсортирован правильно.
Объединение массивов.
Мы можете объединить 2 или больше массивов и получить 1 массив, который содержит элементы соединенных массивов. Для этого используем метод concat():
И, конечно, вместо ссылки на массив, можно подставить обычные значения, которые вы хотите добавить:
Разделение массива.
Мы можете создать новый массив, содержащий 1 или более элементов из существующего массива, используя функцию slice():
Метод slice() принимает 1 или 2 аргумента. Если передан 1 аргумент (индекс), то новый массив создается из всех элементов старого, начиная с данного индекса. Если передано 2 аргумента, то новый массив создается из элементов, начиная с первого аргумента и до элемента с индексом, переданным во втором параметре, не включая последний. Чтобы было понятней, посмотрим код ниже:
В данном случае 0, 4 означает взять элементы с 0 индекса по 3, включительно.
Замена элементов в массиве.
Мы используем splice() для удаления элементов из массива, но мы так же можем заменить элемент в массиве на новые элементы:
Метод splice() всегда возвращает массив, содержащий элементы, которые были удалены. В строчке 2 будет возвращен 1 элемент «Brian Bell».
Заключение
В данных статьях были описаны методы работы с массивами в JavaScript. Некоторые дополнительные элементы можно посмотреть на MDN, которые я не включил в данный пост. Они работают только в IE9+, поэтому могут оказаться бесполезными.
Есть что добавить? Или знаете какую-нибудь интересную библиотеку, которая поможет управлять массивами? Комментируйте, пожалуйста!
Спасибо за внимание!
Автор статьи: Alex. Категория: JavaScript
Дата публикации: 07.04.2013