Эта статья даст больше информации о массивах JavaScript с нуля.
Содержание, которое мы собираемся покрыть:
- Введение в массивы
- Создание массивов
- Основные методы массива, такие как push, pop, shift, unshift и splice.
- Циклы for in, for of и forEach
- Сопоставьте, отфильтруйте и уменьшите
- Структурирование массива и деструктурирование массива
- Операторы Rest и Spread
Что такое массив? Зачем нам это нужно? Почему бы не продолжить работу с переменными вместо массивов?
Проще говоря, массивы используются для хранения более одного свойства переменной.
Чтобы понять это, давайте возьмем пример с шахматными фигурами.
Если вы хотите хранить каждое свойство/характеристику каждой шахматной фигуры с помощью переменных, тогда потребуется больше переменных.
Большее количество переменных для описания характеристик только одной части будет беспорядочным, займет больше места, а отладка кода будет сложнее. .
Вот вам и концепция массивов. Массивы могут уменьшить вышеуказанные проблемы за счет своих преимуществ.
Массивы могут хранить более одного значения для одной переменной.
Синтаксис массива
empty_array=[] array1 = [value1,value2,value3]
Используя приведенный выше синтаксис, мы можем создать массив.
Основные методы массива
Отправить
Push — это метод массива, который используется для отправки/вставки элемента в n-е/последнее место в массиве.
Аргумент вход будет значением, к которому мы хотим добавить текущий массив.
Метод push возвращает длину массива.
array_of_numbers=[1,2,3,4,5] array_of_numbers_after_push = array_of_numbers.push(10) console.log(array_of_numbers) console.log(array_of_numbers_after_push)
Здесь array_of_numbers (строка №: 4) обозначает изменение массива, а array_of_numbers_after_push — это вывод возвращаемого значения метода push, т.е. длина массива
POP
Метод pop используется для удаления элемента, расположенного в n-м/последнем месте массива.
В pop входной аргумент будет nil, и он возвращает элемент, который был удален pop.
array_of_numbers=[1,2,3,4,5] array_of_numbers_after_pop = array_of_numbers.pop() console.log(array_of_numbers) console.log(array_of_numbers_after_pop)
Сдвиг
Метод shift сдвигает все элементы массива влево. Это приводит к удалению первого элемента массива.
Методы сдвига возвращают элементы, которые были удалены смещением.
array_of_numbers=[1,2,3,4,5] array_of_numbers_after_shift = array_of_numbers.shift() console.log(array_of_numbers) console.log(array_of_numbers_after_shift)
Включить
Unshift сместит элементы слева направо. В результате заданное число будет помещено на первую позицию.
Unshift возвращает длину массивов.
array_of_numbers=[1,2,3,4,5] array_of_numbers_after_unshift = array_of_numbers.unshift(10) console.log(array_of_numbers) console.log(array_of_numbers_after_unshift)
Соединение
Метод splice будет объединять/вырезать массив, соответствующий заданным аргументам.
Входными данными будут начало индекса, а затем количество значений (включая начальное значение индекса), которые необходимо удалить, а затем его заменяемые значения.
Метод splice возвращает элементы, которые были удалены из массива.
Давайте посмотрим на это на простом примере.
let array_of_numbers=[1,2,3,4,5,6,7,8,9,10] let array_of_numbers_after_splice=array_of_numbers.splice(4,5) console.log(array_of_numbers) console.log(array_of_numbers_after_splice)
Надеюсь, вы понимаете удаление элементов с помощью метода сращивания.
Мы также можем заменять элементы с новым значением вместо элементов, которые были удалены ранее методом сращивания.
let array_of_numbers=[1,2,3,4,5,6,7,8,9,10] let array_of_numbers_after_splice=array_of_numbers.splice(4,5,11,12) console.log(array_of_numbers) console.log(array_of_numbers_after_splice)
Здесь мы ввели значения замены как 11 и 12, которые были заменены в выходных данных.
Циклы
Для цикла
Цикл for in в основном работает с индексами заданного массива.
array_of_numbers=[1,2,3,4,5] for (i in array_of_numbers){ console.log(array_of_numbers[i]) }
Он не может напрямую работать со значениями. Для этого варианта использования есть еще один цикл, называемый циклом for of.
Давайте посмотрим на цикл for of.
Для цикла
Цикл For of в основном работает с значениями массива, в отличие от цикла for in, который работает в основном с индексом массива. .
array_of_numbers=[1,2,3,4,5] for (values of array_of_numbers){ console.log(values) }
Надеюсь, вы поняли разницу между циклами for-in и for-of.
В основном мы работаем с значениями, а не с индексом значений, поэтому цикл for of оказывает большее влияние, чем цикл for in. петля.
Мы видели циклы for-in и for-of, эти циклы называются внешними циклами, поскольку они являются внешним свойством массивов, и массив не владеет этими циклами.
Существует один цикл с именем цикл forEach, который принадлежит массиву и называется внутренний цикл.
Давайте посмотрим больше об этом.
Цикл Foreach
Code Without arrow function let array_of_numbers = [1, 2, 3, 4, 5] array_of_numbers.forEach(function(value) { console.log(value); }) With arrow function let array_of_numbers = [1, 2, 3, 4, 5] array_of_numbers.forEach(value => console.log(value))
Сопоставление, фильтрация и сокращение
Давайте рассмотрим эти концепции на простом примере.
Предположим, вам нужно вывести четные числа от 1 до 100 одно за другим, используя цикл for, какой оператор вы будете использовать?..
Просто, это оператор модуля, верно?
Но можно ли передавать каждое значение в цикл for?.. не увеличит ли это временную сложность?
Можем ли мы сначала выполнить оператор модуля и отфильтровать четные числа, а затем использовать цикл for для печати этих чисел?
Ага. Мы можем это сделать.
Появляется метод filter.
Давайте посмотрим код, вы поймете.
let array_of_numbers = [1, 2, 3, 4, 5, 6] array_of_numbers.filter(value => value % 2 === 0). forEach(value => console.log(value))
Здесь перед переходом к циклу forEach мы фильтруемчетные числа и используем цикл forEach только для >перечислите элемент.
Что, если вы хотите использовать эти отфильтрованные значения для выполнения дальнейших операций до перехода в цикл forEach?
Наступает метод карты.
Давайте разберемся с методом карты на простом коде.
let array_of_numbers = [1, 2, 3, 4, 5, 6] array_of_numbers.filter(value => value % 2 === 0). map(value => Math.sqrt(value)). forEach(value => console.log(value))
Здесь мы сначала отфильтровали четные числа с помощью метода filter, затем нашли квадратный корень из отфильтрованных чисел с помощью метода map, а затем вывести все квадратные корни, используя цикл forEach.
Надеюсь, вы поняли о фильтре и карте.
Теперь давайте посмотрим на метод reduce.
Само название означает, что оно сведет числа к одному. Посмотрим на простом коде.
let array_of_numbers = [1, 2, 3, 4, 5, 6] sqrt = array_of_numbers.filter(value => value % 2 === 0). map(value => Math.sqrt(value)). reduce((sum, value) => sum + value) console.log(sqrt)
Здесь мы добавили квадратные корни всех значений, полученных методом map, и присвоили их переменной sqrt. Когда мы попытались напечатать переменную, она выводит результат.
Таким образом, мы можем интегрировать методы сопоставления, фильтрации и редукции для решения нашего варианта использования в массивах.
Структурирование и деструктурирование массивов
Давайте сначала посмотрим на структурирование массивов.
Когда мы конструируем массив с помощью переменных, это называется структурированием массива.
Структурирование массива — это один из способов создания массива.
Давайте посмотрим на это на простом коде.
let element1 = 2 let element2 = 4 let element3 = 6 let element4 = 8 let element5 = 10 let array = [element1, element2, element3, element4, element5] console.log(array)
Надеюсь, вы поняли, что такое структурирование массива, а теперь давайте посмотрим на деструктурирование массива.
Деструктуризация массива противоположна структурированию массива.
Давайте разберемся с этим на простом коде.
let array = [2, 4, 6, 8, 10] let [element1, element2, element3, element4, element5] = array console.log(element1) console.log(element2) console.log(element3) console.log(element4) console.log(element5)
Это приводит к двум важным концепциям, которые часто используются в JavaScript, а именно к операторам Rest и Spread.
Оператор отдыха
Когда мы не знаем, сколько аргументов мы передадим функции, мы будем использовать нотацию ….
Давайте разберемся в этом на простом примере.
let result = function(element1, element2, element3, ...remaining_elements) { sum = element1 + element2 + element3 for (j of remaining_elements) { sum = sum + j } return sum } console.log(result(10, 20, 30, 40, 50))
В этом примере мы передаем 5 аргументов/атрибутов в 4, функциональные параметры равны 4, но у нас есть нотация … в 4-м параметре,
таким образом, первые 3 аргумента будут сохранены в 3 параметрах, а оставшееся количество параметров «n» будет сохранено в этом 4-м параметре вместе с … обозначением.
Здесь мы использовали … нотацию в функциональных параметрах, поэтому это называется оператор покоя.
Если мы используем … обозначение в аргументах/атрибутах, то это называется параметром распространения.
Давайте посмотрим, как использовать … нотацию на стороне аргумента в простом коде ниже.
let result = function(element1, element2, element3, element4, element5) { sum = element1 + element2 + element3 + element4 + element5 return sum } let [element1, ...remaining_elements] = [10, 20, 30, 40, 50] console.log(result(element1, ...remaining_elements))
В операторе rest мы используем … в параметрах, поэтому мы можем вызывать любое количество аргументов и в spread, мы используем … в аргументах, поэтому мы можем передавать любое количество параметров.
Надеюсь, вы поняли разницу между операторами отдыха и спреда.
Вот и все.
Спасибо за ваше терпение читает. Следите за моими будущими статьями.
Вы можете указать код здесь