От автора: сегодня мы поговорим о том, как происходит в TypeScript работа с массивами. Использование переменных для хранения значений задаёт следующие ограничения.
По своей природе переменные являются скалярными. Другими словами, одно объявление переменной может содержать только одно значение, то есть для хранения n-количества переменных, программе потребуется n-количество объявлений переменных. Отсюда следует, что если вам нужно хранить большой набор значений, использовать переменные не целесообразно.
Переменным в программе память присваивается случайным образом, и это усложняет извлечение/чтение переменных в порядке их объявления.
Для таких задач TypeScript представляет концепцию массивов. Массив – это однородный набор значений. Проще говоря, массив – это набор значений одного типа данных. Это тип данных, определённых пользователем.
Характеристики массива
Ниже приведён список характеристик массива:
Объявление массива определяет последовательные блоки памяти.
Массивы статичны. Это значит, что после того, как массив был инициализирован, его размер больше нельзя изменить.
Каждый блок памяти представляет элемент массива.
Элементы массива определяются уникальным целым числом, которое называется индексом элемента.
Так же, как и переменные, массивы нужно объявлять перед тем, как их использовать. Чтобы объявить массив, используйте ключевое слово var.
Инициализация массива подразумевает загрузку элементов массива.
Значения элемента массива можно обновить или изменить, но не удалить.
Объявление и инициализация массивов
Чтобы объявить инициализацию массива в Typescript, используйте следующий синтаксис:
Синтаксис
1 2 |
var array_name[:datatype]; //объявление array_name = [val1,val2,valn..] //инициализация |
Объявленный массив без типа данных считается массивом типа any. В этом случае тип массива определяется по типу данных первого элемента массива во время инициализации.
Например, такое объявление как var numlist:number[] = [2,4,6,8] создаст следующий массив:
Указатель массива указывает на первый элемент по умолчанию.
Массивы могут быть объявлены и инициализированы в одном операторе. Синтаксис выглядит следующим образом:
1 |
var array_name[:data type] = [val1,val2…valn] |
Примечание − Пара [] называется измерением массива.
Доступ к элементам массива
Имя массива, после которого следует индекс используется для ссылки на элемент массива. Синтаксис выглядит следующим образом:
1 |
array_name[subscript] = value |
Пример: простой массив
1 2 3 4 |
var alphas:string[]; alphas = ["1","2","3","4"] console.log(alphas[0]); console.log(alphas[1]); |
После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 |
//Сгенерировано посредством typescript 1.8.10 var alphas; alphas = ["1", "2", "3", "4"]; console.log(alphas[0]); console.log(alphas[1]); |
И получаем такой результат:
1 2 |
1 2 |
Пример: Объявление и инициализация в одном операторе
1 2 3 4 5 |
var nums:number[] = [1,2,3,3] console.log(nums[0]); console.log(nums[1]); console.log(nums[2]); console.log(nums[3]); |
После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 6 |
// Сгенерировано посредством typescript 1.8.10 var nums = [1, 2, 3, 3]; console.log(nums[0]); console.log(nums[1]); console.log(nums[2]); console.log(nums[3]); |
И получаем такой результат:
1 2 3 4 |
1 2 3 3 |
Объект Array
Создать массив можно также используя объект Array. Конструктору Array может быть передано.
Численное значение, которое представляет размер массива или
Список значений, разделённых запятой.
Следующий пример показывает, как создать массив с помощью этого метода. Пример
1 2 3 4 5 6 |
var arr_names:number[] = new Array(4) for(var i = 0;i<arr_names.length;i++;) { arr_names[i] = i * 2 console.log(arr_names[i]) } |
После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 6 7 |
// Сгенерировано посредством typescript 1.8.10 var arr_names = new Array(4); for (var i = 0; i < arr_names.length; i++) { arr_names[i] = i * 2; console.log(arr_names[i]); } |
И получаем такой результат:
1 2 3 4 |
0 2 4 6 |
Пример: Конструктор Array принимает значения, разделённые запятой
1 2 3 4 5 |
var names:string[] = new Array("Mary","Tom","Jack","Jill") for(var i = 0;i<names.length;i++) { console.log(names[i]) } |
После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 |
// Сгенерировано посредством typescript 1.8.10 var names = new Array("Mary", "Tom", "Jack", "Jill"); for (var i = 0; i < names.length; i++) { console.log(names[i]); } |
Результат выглядит следующим образом:
1 2 3 4 |
Mary Tom Jack Jill |
Методы Array
Ниже приведён список методов объекта Array вместе с описанием:
concat() — Возвращает новый массив, состоящий из этого массива, объединённого с другим(и) массивом(массивами) и/или значением(значениями).
every() — Возвращает true, если каждый элемент этого массива удовлетворяет заданной проверочной функции.
filter() — Создаёт новый массив со всеми элементами этого массива, для которых заданная проверочная функция возвращает истину.
forEach() — Вызывает функцию для каждого элемента в массиве.
indexOf() — Возвращает первый (наименьший) индекс элемента внутри массива, равного указанному значению, или -1, если не найдено.
join() — Объединяет все элементы массива в строку.
lastIndexOf() — Возвращает последний (наибольший) индекс элемента внутри массива, равного указанному значению, или -1, если не найдено.
map() — Создаёт новый массив с результатами вызова заданной функции для каждого элемента в этом массиве.
pop() — Убирает последний элемент из массива и возвращает этот элемент.
push() — Добавляет один или больше элементов к массиву и возвращает новую длину массива.
reduce() — Применяет функцию одновременно к двум значениям массива (слева направо), чтобы уменьшить к единому значению.
reduceRight() — Применяет функцию одновременно к двум значениям массива (справа налево), чтобы уменьшить к единому значению.
reverse() — переставляет элементы массива в обратном порядке – первый становится последним, а последний – первым.
shift() — Убирает первый элемент из массива и возвращает этот элемент.
slice() — Извлекает секцию массива и возвращает новый массив.
some() — Возвращает true, если по крайней мере один элемент в этом массиве удовлетворяет заданной проверочной функции.
sort() — Сортирует элементы массива.
splice() — Добавляет и/или убирает элементы из массива.
toString() — Возвращает строку, представляющую массив и его элементы.
unshift() — Добавляет один или больше элементов в начало массива и возвращает новую длину массива.
Деструктурирование массива
Обозначает разрушение структуры объекта. TypeScript поддерживает деструктурирование, если речь идёт о массиве. Пример
1 2 3 4 |
var arr:number[] = [12,13] var[x,y] = arr console.log(x) console.log(y) |
После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 |
// Сгенерировано посредством typescript 1.8.10 var arr = [12, 13]; var x = arr[0], y = arr[1]; console.log(x); console.log(y); |
И получаем такой результат:
1 2 |
12 13 |
Обход массива при помощи цикла for…in
Для прохождения через массив, можно использовать for…in цикл.
1 2 3 4 5 6 |
var j:any; var nums:number[] = [1001,1002,1003,1004] for(j in nums) { console.log(nums[j]) } |
Цикл осуществляет обход массива при помощи индекса. После компиляции мы получим следующий JavaScript код:
1 2 3 4 5 6 7 |
// Сгенерировано посредством typescript 1.8.10 var j; var nums = [1001, 1002, 1003, 1004]; for (j in nums) { console.log(nums[j]); } |
Ниже приведён результат этого кода:
1 2 3 4 |
1001 1002 1003 1004 |
Массивы в TypeScript
TypeScript поддерживает следующие концепции в массивах:
Многомерные массивы — TypeScript поддерживает многомерные массивы. Простейшая форма многомерного массива – это двухмерный массив.
Передача массивов функциям — Вы можете передавать функции указатель массива, указывая имя массива без индекса.
Возвращать массив из функций — Позволяет функции возвращать массив.
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.