let array = [ "A", "B", "C", "D"];
array[0] // "A"
array[1] // "B"
array[2] // "C"
array[3] // "D"
Массив - это пары "ключ-значение".
Значения в массиве могут быть любого типа и в любом сочетании (в т.ч. массив и объект)
Ключ - это указатель позиции значения в некоторой структуре.
Ключ в массиве подобен ключу в строке - всегда начинается с 0
Длина массива определяется свойством .length
Массив - это объект.
Объект - это значит передача по ссылке, а не по значению.
Проверка на массив Array.isArray( arr )
литерал | конструктор | описание |
---|---|---|
[] | new Array() | пустой массив |
[,,] | new Array(3) | массив без значений в три элемента |
[1, 2, 3] | new Array(1, 2, 3) | массива из элементов number |
['a', 'b', 'c'] | new Array('a', 'b', 'c') | массива из элементов string |
[true, undefined, null] | new Array(true, undefined, null) | массива из элементов различных типов |
[[1,2,3], ['a', 'b', 'c'], [[[true]]]] | new Array([1,2,3], ['a', 'b', 'c'], [[[true]]]) | массив массивов |
let arr = [];
arr.length 0
arr[10] = 'cell'
arr.length 11
arr[10] cell
arr[10] = 'arr cell'
delete arr[10]
arr[10] undefined
arr.length 11
let arr = [1,1,1,1,1,1,1,1,1,1];
arr.length; 10
arr.length = 5; [1,1,1,1,1]
arr.length = 10; [1,1,1,1,1,,,,,]
arr[arr.length - 1] = 'end'; arr.length - 1
arr [1,1,1,1,1,,,,,'end']
let str = "abcdefghij";
str.length; 10
str.length = 5;
str[9]; "j"
str.length; 10
let arr = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j'
];
arr.length; 10
arr.length = 5;
arr[9] undefined
arr.length; 5
let arr = new Array(3); [,,]
arr.fill(1) [1,1,1]
arr[arr.length - 1] = 'end'; [1,1,'end']
let addToEnd = arr.push('after end') [1,1,'end', 'after end']
addToEnd The push return length of array 4
let delFromEnd = arr.pop() [1,1,'end']
delFromEnd The pop return deleted element 'after end'
let addToStart = arr.unshift('start') ['start',1,'end']
addToStart The unshift return length of array 4
let delFromStart = arr.shift() [1,1,'end']
delFromStart The shift return deleted element 'start'
To Array .split()
let str = "abcdefghij";
let arrFromStr = str.split(""); [ ' a', ' b', ' c', ' d', ' e', ' f', ' g', ' h', ' i', ' j']
let sentence = "How do you do?";
let arrFromSentence = sentence.split(" "); [ ' How', ' do', ' you', ' do?' ]
let uri = "https://goit.ua/course/";
let arrFromUri = uri.split("/"); [ ' https:',, ' goit.ua', ' course', ]
To String .join()
let toStr = arrFromStr.join("") "abcdefghij"
let toSentence = arrFromSentence.join(" ")"How do you do? "
let toUri = arrFromUri.join("/") "https://goit.ua/course/"
Конкатенация .concat()
let first = ['a', 'b']
let second = ['c', 'd']
let adding = first.concat(second) [ ' a', ' b', ' c', ' d' ]
let third = ['e', 'f']
let superAdding = first.concat(second, third) [ ' a', ' b', ' c', ' d', ' e', ' f' ]
Объединяем массивы в новом массиве
let first = [10, 20]
let second = [30, 40]
let adding =
[...first, ...second]
[10,20,30,40]
Получить подмассив .slice()
let cdef = superAdding.slice(2) 'cdef'
let cde = superAdding.slice(2, 5) 'cde'
let cdeFromEnd = superAdding.slice(2,-1) 'cde'
Индекс по значению .indexOf(value)
[ ' a', ' b', ' c', ' d', ' e', ' f' ]. indexOf('c') 2
[ ' a', ' b', ' c', ' d', ' e', ' f' ]. indexOf('z') -1
Есть ли такое значение .includes(value)
[ ' a', ' b', ' c', ' d', ' e', ' f' ]. includes('z') false
Сортировка .sort()
[20,100,3,400].sort() 100,20,3,400
Обратный порядок .reverse()
[20,100,3,400].reverse() 400,3,100,20
Обратная сортировка .sort().reverse()
[20,100,3,400].sort().reverse() 400,3,20,100
Забегаем вперед - задаем правило сортировки с помощью стрелочной функции
Если функция возвращает 0, то элементы равны и не перемещаются.
Если функция возвращает 1, то элементы размещаются от меньшего к большему.
Если функция возвращает -1, то элементы размещаются от большего к меньшему.
array.sort(callback)
callback - функция сортировки
[20,100,3,400].sort((a,b) => a - b)
3,20,100,400
Деструктуризация массивов
let arr = [10, 20, 30]
let ten = arr[0]
let twenty = arr[1]
let thirty = arr[2]
Как упростить ? Деструктуризация
Структура массива - это порядок в расположении элементов. Упростить присвоение значений из массива можно, если использовать это свойство порядка. Такое использование структуры для извлечения данных называют разбор структуры данных на составные части, т.е. деструктуризация. При этом массив не изменяется.
let [ten, twenty, thirty] = [10, 20, 30]
ten === 10 true
twenty === 20 true
thirty === 30 true
Забегаем вперед - используем оператор ... spread
let [ten, ...restOfArr]
= [10, 20, 30]
ten 10
restOfArr [20, 30]
объявление | переменных |
---|---|
let byValue; | let array; |
By value | By link |
byValue = 10 | array = [10] |
let betaByValue = byValue | let betaArray = array |
betaValue = "Ups" | betaArray[0] = "Ups" |
byValue ? 10 | array[0] ? "Ups" |
не копирование
let arr = [10]
let bar = arr
bar === arr true
копирование
bar = [];
bar[0] = arr[0];
bar === arr false
bar[0] === arr[0] true
методы для копирования
concat
let arr = [10]
let bar = [].concat(arr)
bar === arr false
slice
let arr = [10]
let bar = arr.slice(0)
bar === arr false
Забегаем вперед - используем оператор ... spread
Копируем массив
let oldArr = [10, 20]
let newArr = [...oldArr]
[10,20]
newArr === oldArr
false
newArr[0] === oldArr[0]
true
newArr[1] === oldArr[1]
true