Skip to content

9.1 Array (Массивы)

Igor Demin edited this page Jan 7, 2024 · 13 revisions

Массивы

Массив - это объект с цифровыми именами св-в

const myArray = [1, 2, 3] // Первый способ создания массива
console.log(myArray) // [1, 2, 3]

const myArray1 = new Array(1, 2, 3) // второй способ создания массива
console.log(myArray1) // [1, 2, 3]

const myArray = [1, true, 'Igor']
console.log(myArray) // [ 1, true, 'Igor' ]
console.log(myArray.length) // при создании массива добавляется св-во length = 3, оно равняется длине массива и будет изменяться если массив буде увеличиваться/уменьшаться

Оператор сравнения массивов и объектов

const myArray = [1, true, 'igor']
const myArray2 = [1, true, 'igor']
myArray === myArray2 // false т.к. находятся в разных местах памяти.

const myArray3 = myArray
myArray3 === myArray // true  т.к. ссылаются на одно место в памяти

Массив VS Объект

Создадим объект и такой же массив, вывод будет разный, но у массива будет тоже самое если его развернуть и разным будет прототип. Еще у массива поле length будет обновляться автоматически, а у объекта не будет.

const myObject = {
  0: 1,
  1: 2,
  2: 3, 
  length: 3
}
console.log(myObject) // {0: 1, 1: 2, 2: 3, length: 3}

const myArray = [1, 2, 3] 
console.log(myArray) // [1, 2, 3]

image

Чтение значений массива

Если св-ва у объекта цифровые 0, 1, 2 ... , то нельзя использовать точечную запись, нужно использовать []

const myArray = [1, true, 'a']
console.log(myArray) // [ 1, true, 'a' ]

myArray.0 // Uncaught SyntaxError: Unexpected number

console.log(myArray[0]) // 1
console.log(myArray[1]) // true

console.log(myArray.length) // 3

Как работать с элементами массива

Если поменяем св-ва length массива, то длинна массива изменится. Порядок элементов в массиве важен т.к. у каждого элемента есть порядковый номер, у первого например индекс 0

myArray.length = 7
myArray // (7) [1, true, 'a', empty × 4] появилось 4 пустых значений, так делать не рекомендуется т.к. меняется автоматически

myArray.length = 3 // вернули правильное значение.

Как добавлять элементы в массив

const myArray = [1, 2, 3, 4]
console.log(myArray) // [1, 2, 3, 4]
console.log(myArray.length) // 4

myArray[2] = 'abc'
console.log(myArray) // [1, 2, 'abc', 4]
console.log(myArray[2]) // 'abc'

myArray[4] = true
console.log(myArray) // [ 1, 2, 'abc', 4, true ]
console.log(myArray.length) // 5

Но так не оч. удобно добавлять элемент в конец массива т.к. надо знать длину массива, а для этого уже используются методы массивов.

Методы массивов

Все эти методы называются - функции высшего порядка в массивах, либо методами прототипов массива которые наследуется всеми массивами.

image

Рассмотрим несколько методов прототипа Array:

push - добавляет значение в конец массива

const myArray = [1, 2, 3]
console.log(myArray) // [1, 2, 3]

myArray.push(4) // добавляет значение 4 в конец массива
console.log(myArray) // [ 1, 2, 3, 4 ]

pop - используется без аргументов т.к. удаляет последний элемент в массиве. Кроме этого он еще возвращает этот элемент и можно например присвоить переменную этому элементу.

const myArray = [1, 2, 3]
console.log(myArray) // [ 1, 2, 3 ]
myArray.pop()
console.log(myArray) // [ 1, 2 ]

const removedElement = myArray.pop()
console.log(myArray) // [ 1 ]
console.log(removedElement) // 2

unshift - добавляет элемент в начало массива

const myArray = [1, 2, 3]
console.log(myArray)
myArray.unshift(true)
console.log(myArray) // [ true, 1, 2, 3 ]
myArray.unshift('abc')
console.log(myArray) // [ 'abc', true, 1, 2, 3 ]

shift - удаляет первый элемент в массиве и используется без аргументов и так же как и pop возвращает удалённый элемент

const myArray = [1, 2, 3]
console.log(myArray) // [1, 2, 3]
myArray.shift()
console.log(myArray) // [ 2, 3 ]

const removedElement = myArray.shift()
console.log(myArray) // [ 3 ]
console.log(removedElement) // 2

ВАЖНО! - все эти методы мутируют оригинальный массив, а не создают новый.