-
Notifications
You must be signed in to change notification settings - Fork 0
9.1 Array (Массивы)
Массив - это объект с цифровыми именами св-в
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 т.к. ссылаются на одно место в памяти
Создадим объект и такой же массив, вывод будет разный, но у массива будет тоже самое если его развернуть и разным будет прототип. Еще у массива поле 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]
Если св-ва у объекта цифровые 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
Но так не оч. удобно добавлять элемент в конец массива т.к. надо знать длину массива, а для этого уже используются методы массивов.
Все эти методы называются - функции высшего порядка в массивах, либо методами прототипов массива которые наследуется всеми массивами.
Рассмотрим несколько методов прототипа 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
ВАЖНО! - все эти методы мутируют оригинальный массив, а не создают новый.
footer