Массив - это особая концепция в любом языке программирования. Все основные языки программирования поддерживают структуру данных массива. Прежде чем углубляться в технические детали массива с точки зрения программирования, давайте попробуем понять, что такое массив с точки зрения обычного человека.
Вы когда-нибудь видели школьное собрание? Это довольно очевидно, вы это видели, и в детстве мы все были участниками этого скучного события. В актовом зале ученики одного класса или секции сидят в одном ряду, не так ли. Это минимальный реальный пример массива.
Другой пример - цветной пенал, который все мы использовали для раскрашивания картинок. В этой красивой коробочке у предметов есть что-то общее. Все они используются для придания цвета, верно. Итак, с точки зрения программирования, мы можем сказать, что массив - это набор элементов, связанных друг с другом.
Расположение элементов внутри массива приводит к особой структуре, из-за которой массивы называются особым типом структуры данных. Термин «структура данных» относится к расположению данных таким образом, что установка и извлечение элементов очень просты и следуют определенному шаблону.
По сути, массив может просто содержать простые элементы данных, такие как числа и строки, или, в более сложных сценариях, они могут содержать сложные объекты. В частности, в javaScript массивы основаны на хэш-таблицах, и они не обязательно размещаются в непрерывных ячейках памяти.
Массивы JavaScript основаны на индексах, и мы можем устанавливать и извлекать элементы на основе их индексов. JavaScript по существу не поддерживает концепцию ассоциативных массивов, что означает, что он не извлекает и не устанавливает элементы массива с помощью ключей или простых строк терминов.
Самый простой способ инициализировать массив в JavaScript - это
var arr = [];
Если вы хотите сохранить какие-то элементы, скажем, несколько чисел в массиве, мы можем инициализировать его следующим образом.
var arr = [1,2,3,4,5];
Если вы хотите сохранить некоторые объекты в массиве, это будет похоже на фрагмент кода ниже. В этом случае массив также известен как массив объектов.
var arr = [ { name: 'Satya', age: 28 }, { name: 'Priya', age: 24 }, { name: 'Mishra', age: 23 } ];
Массивы JavaScript не индексируются. Что это значит и почему? Посмотрим через некоторое время.
Нулевой индекс просто означает, что индекс первого элемента массива JavaScript начинается с 0, как и в C и C ++. Существуют другие программы COBOL, FORTRAN, R, Julia и т. Д., Которые не следуют этому соглашению. Это происходит с JavaScript из-за конструкции языка программирования. Когда мы говорим, что хотим получить доступ к первому элементу массива, по замыслу, первый элемент находится в месте, на которое ссылается сама переменная массива. Таким образом, здесь индекс не указывает на позицию элемента в памяти, а скорее указывает на смещение элемента от начальной ячейки памяти, на которую указывает переменная. Ясно, Ха. Теперь давайте рассмотрим некоторые важные свойства и методы структуры данных массива в JavaScript.
длина
Свойство length дает количество элементов, присутствующих в массиве. Это очень важное свойство, так как оно очень полезно при итерации по массиву. Индекс последнего элемента в массиве на 1 меньше длины.
var arr = [1, 2, 3, 4, 5]; console.log(arr.length); // 5
Чтобы получить последний предмет, мы можем сделать следующее:
arr[arr.length - 1] // 5
Для итерации по массиву мы можем запустить цикл for по массиву со свойством length, входящим в качестве условия.
for (var i = 0; i < arr.length; i++) { console.log(arr[i]); }
push ():
Метод push используется для добавления нового элемента массива в конец массива. Довольно просто. Посмотрим на синтаксис.
var arr = [1,2,3,4,5]; arr.push(6); console.log(arr); // [1, 2, 3, 4, 5, 6]
pop ():
Метод pop используется для удаления последнего элемента из массива. Мы даже можем очистить массив с помощью этого метода, если мы запустим цикл для массива для счетчика, равного длине массива, и вытолкнем из него каждый элемент. Метод pop () возвращает всплывающее значение.
var arr = [1, 2, 3, 4, 5]; var len = arr.length; for (var i = 0; i < len; i++) { arr.pop(); }
shift ():
Метод shift () используется для удаления элемента из начала массива. Он возвращает удаленный элемент после операции.
var arr = [1, 2, 3, 4, 5]; arr.shift();
unshift ():
Метод unshift используется для добавления нового элемента в начало массива. Возвращает длину последнего массива.
var arr = [1, 2, 3, 4, 5]; arr.unshift(0);
delete ():
Метод удаления используется для удаления записи массива следующим образом.
var arr = [1, 2, 3, 4, 5]; delete arr[2]; console.log(arr); // [1, 2, empty, 4, 5]
Он возвращает логическое значение true или false в зависимости от того, успешно ли была проведена операция удаления. Удаленный элемент отображается как пустой в массиве, и длина массива остается неизменной. Это происходит потому, что, хотя в конкретном месте памяти нет элемента, он все равно учитывается в длине массива.
splice ():
Метод splice удаляет элементы массива и заменяет новые элементы, если они предусмотрены. Синтаксис метода splice () следующий.
splice (начальный индекс для удаления элемента, количество элементов для удаления, элементы для замены);
Третий параметр необязательный.
var arr = [1, 2, 3, 4, 5]; arr.splice(1, 2); console.log(arr); // [1, 4, 5]
При замене элементов, указав третий параметр, мы можем сначала удалить элемент и заменить его новыми элементами.
var arr = [1, 2, 3, 4, 5]; arr.splice(1, 2, 9, 10); console.log(arr); // [1, 9, 10, 4, 5]
Если задан отрицательный индекс, операция склейки выполняется с конца массива. Этот метод возвращает новый массив, содержащий удаленные элементы.
Slice ():
Этот метод возвращает новый массив, содержащий указанные элементы, за исключением последнего предоставленного индекса.
arr = [1, 2, 3, 4, 5]; arr.slice(1, 3); // [2, 3]
concat ():
Метод concat объединяет более двух массивов или значений в один массив и возвращает новый массив. Новый массив сериализуется в соответствии с исходными массивами.
var arr1 = [1, 2]; var arr2 = [3, 4]; arr1.concat(arr2); // [1,2,3,4]
Порядок операции concat имеет значение, и последовательность изменяется, как показано в следующем фрагменте кода.
var arr1 = [1, 2]; var arr2 = [3, 4]; arr2.concat(arr1); // [3,4,1,2]
Метод concat также принимает отдельные значения в качестве аргументов, как показано ниже.
var arr1 = [1, 2]; var arr2 = [3, 4]; arr1.concat(arr2, 5, 6); // [1,2,3,4,5,6]
forEach ():
Метод forEach используется для перебора массива. Он встроен в прототип Array. Преимущества цикла forEach выше:
- у него четкий синтаксис
- метод forEach сохраняет переменные из функции обратного вызова, привязанные к локальной области видимости
- forEach менее подвержен ошибкам
Пример метода forEach приведен ниже.
arr = [1,2,3,4,5]; arr.forEach((item, index) => { console.log(`${item} is at index ${index}`); }); // 1 is at index 0 // 2 is at index 1 // 3 is at index 2 // 4 is at index 3 // 5 is at index 4
indexOf ():
Этот метод возвращает позицию первого вхождения элемента в массив. Если предоставленный элемент не является частью массива, он возвращает -1. Благодаря этой функции этот метод используется для проверки наличия элемента в массиве.
Сначала давайте рассмотрим очень простой пример.
var arr = [1, 2, 3, 4, 5]; arr.indexOf(3); //2
Чтобы проверить, присутствует ли элемент в массиве, мы можем сделать следующее:
var arr = [1, 2, 3, 4, 5]; if (arr.indexOf(item) > -1) { // Code to be executed when item is present }
lastIndexOf ():
Метод lastIndexOf возвращает последнее вхождение элемента в массиве. По сути, поиск выполняется с конца массива.
var arr = [1, 2, 3, 4, 1, 6]; arr.lastIndexOf(1); // 4
включает ():
Этот метод проверяет, присутствует ли элемент в массиве, и возвращает логическое значение.
var arr = [1, 2, 3, 4, 5]; arr.includes(2); // true
find ():
Метод find используется для поиска определенного элемента в массиве. Этот метод очень полезен, особенно когда вы имеете дело с массивом объектов. Мы передаем условие для этого метода, и он выбирает первый элемент, который соответствует условию. Если ни один элемент не соответствует условию, возвращается значение undefined.
var students = [ { roll: 1, name: "John" }, { roll: 2, name: "Pete" }, { roll: 3, name: "Mary" } ]; var student = students.find(student => student.roll == 2); console.log(student.name); // {roll: 2, name: "Pete"}
findIndex ():
Этот метод возвращает индекс найденного элемента вместо всего объекта, и если ни один элемент не соответствует условию, он возвращает -1.
var students = [ { roll: 1, name: "John" }, { roll: 2, name: "Pete" }, { roll: 3, name: "Mary" } ]; var student = students.find(student => student.roll == 2); console.log(student.name); // 1
map ():
Функция map () используется для преобразования массива. Он принимает другую настраиваемую функцию в качестве аргумента и применяет эту функцию к каждому элементу массива. Функция, предоставленная в качестве аргумента, может быть обычной функцией ванильного JavaScript или стрелочной функцией.
var arr = [1, 2, 3, 4, 5]; arr.map(function (item) { console.log(item + 1); });
Сортировка ():
Метод сортировки, как следует из названия, используется для сортировки массива. Простая проблема с методом сортировки заключается в том, что он сортирует элементы по соответствующим строковым значениям ASCII, что иногда дает неточные результаты.
Чтобы решить эту проблему, мы передаем функцию обратного вызова в качестве аргумента, который сравнивает элементы и дает точный результат. Простое использование метода сортировки заключается в следующем.
arr = [3, 2, 3, 4, 2, 2, 7]; arr.sort(function (a, b){ return a - b; });//ascending order sorting
Мы также можем выполнить сортировку в порядке убывания, просто изменив значение, возвращаемое функцией обратного вызова. Пример сортировки по убыванию может быть следующим.
arr.sort(function (a, b) { return b - a; });// descending order sorting
Обратный ():
Этот метод используется для обращения массива. Это очень простой метод.
var arr = [1, 2, 3, 4, 5]; arr.reverse();
reduce ():
Этот метод используется для уменьшения массива до одного значения.
function sum(total, num) { return total + num; } var arr = [1, 2, 3, 4, 5]; numbers.reduce(sum); // 15
isArray ():
Этот метод возвращает логическое значение, указывающее, является ли предоставленная переменная массивом или нет. Если значение является массивом, оно возвращает истину, иначе возвращает ложь.
var arr = [1, 2, 3, 4, 5]; Array.isArray(arr); // true Array.isArray({}); // false
Это в значительной степени наиболее необходимые методы массива.