Операции с массивами

Операции с массивами

Coursme
8 мин.
22 янв. 2024

В JavaScript существует множество методов для манипуляции массивами, обеспечивая удобство добавления, удаления и поиска элементов.

В этом уроке мы расмотрим основные операции с массивами, начиная от добавления и удаления элементов, заканчивая поиском и копированием. Подробные примеры демонстрируют различные способы использования этих методов для эффективной работы с массивами в языке JavaScript.

Добавление элементов

Добавление элементов в массив в JavaScript можно осуществить с использованием различных методов. Один из способов – это использование метода push(), который добавляет элементы в конец массива. Например:

const people = [];
people.push("Tom");
people.push("Sam");
people.push("Bob", "Mike");
console.log("Количество элементов в массиве people: ", people.length);
console.log(people); // ["Tom", "Sam", "Bob", "Mike"]

В данном примере элементы "Tom", "Sam", "Bob" и "Mike" добавляются в конец массива people.

Еще один метод – unshift(), который добавляет новый элемент в начало массива:

const people = ["Bob"];
people.unshift("Alice");
console.log(people);    // ["Alice", "Bob"]
people.unshift("Tom", "Sam");
console.log(people);    // ["Tom", "Sam", "Alice", "Bob"]

В этом случае элементы "Alice", "Tom" и "Sam" добавляются в начало массива people.

Если необходимо добавить элементы по определенному индексу, можно воспользоваться методом splice(). Например, чтобы добавить элемент "Alice" по индексу 1:

const people = ["Tom", "Sam", "Bob"];
people.splice(1, 0, "Alice");
console.log(people); // ["Tom", "Alice", "Sam", "Bob"]

Метод splice() принимает первым аргументом индекс, куда нужно вставить новый элемент, вторым аргументом – количество удаляемых элементов (в данном случае 0, так как мы не удаляем ничего), и далее следуют элементы, которые необходимо добавить.

Также можно добавлять набор элементов, начиная с определенного индекса:

const people = ["Tom", "Sam", "Bob"];
people.splice(1, 0, "Alice", "Alex", "Kate");
console.log(people); // ["Tom", "Alice", "Alex", "Kate", "Sam", "Bob"]

В этом примере "Alice", "Alex" и "Kate" добавляются по индексу 1 в массив people.

Удаление элементов

Удаление элементов из массива в JavaScript можно выполнять различными методами. Один из способов – использование метода pop(), который удаляет последний элемент из массива. Вот пример:

const people = ["Tom", "Sam", "Bob", "Mike"];
const lastPerson = people.pop(); // извлекаем последний элемент
console.log(lastPerson); // Mike
console.log(people); // ["Tom", "Sam", "Bob"]

Метод pop() также возвращает удаленный элемент.

Другой метод – shift(), который извлекает и удаляет первый элемент из массива:

const people = ["Tom", "Sam", "Bob", "Mike"];
const first = people.shift(); // извлекаем первый элемент
console.log(first); // Tom
console.log(people); // ["Sam", "Bob", "Mike"]

Также можно использовать метод splice() для удаления элементов по определенному индексу. Например, удаление элементов с третьего индекса:

const people = ["Tom", "Sam", "Bill", "Alice", "Kate"];
const deleted = people.splice(3);
console.log(deleted); // ["Alice", "Kate"]
console.log(people); // ["Tom", "Sam", "Bill"]

Метод splice() возвращает удаленные элементы в виде нового массива. Если передать отрицательный индекс, удаление будет производиться с конца массива. Например, удаление последнего элемента:

const people = ["Tom", "Sam", "Bill", "Alice", "Kate"];
const deleted = people.splice(-1);
console.log(deleted); // ["Kate"]
console.log(people); // ["Tom", "Sam", "Bill", "Alice"]

Метод splice() также позволяет указать количество элементов для удаления. Например, удаление трех элементов, начиная с первого индекса:

const people = ["Tom", "Sam", "Bill", "Alice", "Kate"];
const deleted = people.splice(1, 3);
console.log(deleted); // ["Sam", "Bill", "Alice"]
console.log(people); // ["Tom", "Kate"]

Копирование массивов

Копирование массивов в JavaScript может быть выполнено с использованием метода slice(). Существует два типа копирования: поверхностное (неглубокое) и глубокое.

Поверхностное копирование (неглубокое):При поверхностном копировании переменной присваивается значение другой переменной, содержащей массив. В результате переменные указывают на один и тот же массив. Пример:

const users = ["Tom", "Sam", "Bill"];
console.log(users); // ["Tom", "Sam", "Bill"]
const people = users; // Поверхностное копирование
people[1] = "Mike"; // Изменение второго элемента
console.log(users); // ["Tom", "Mike", "Bill"]

Изменения, внесенные в people, также отражаются в users, поскольку они указывают на один и тот же массив.

Глубокое копирование:Глубокое копирование создает независимую копию массива. Метод slice() может использоваться для этого:

const users = ["Tom", "Sam", "Bill"];
console.log(users); // ["Tom", "Sam", "Bill"]
const people = users.slice(); // Глубокое копирование
people[1] = "Mike"; // Изменение второго элемента
console.log(users); // ["Tom", "Sam", "Bill"]
console.log(people); // ["Tom", "Mike", "Bill"]

Метод slice() также позволяет копировать часть массива, указывая начальный и конечный индексы. Например:

const users = ["Tom", "Sam", "Bill", "Alice", "Kate"];
const people = users.slice(1, 4); // Копирование с индекса 1 по индекс 3 (не включая)
console.log(people); // ["Sam", "Bill", "Alice"]

Если второй индекс отрицателен, он отсчитывается с конца массива.

Метод copyWithin() позволяет копировать элементы внутри массива. Принимает три параметра: индекс, откуда начать вставку копии, начальный индекс для копирования и конечный индекс, до которого следует копировать. Пример:

const users = ["Tom", "Sam", "Bob", "Alice", "Kate"];
const people = users.copyWithin(1, 3, 5); // Копирование с индекса 3 по индекс 4 (два элемента) на позицию 1
console.log(people); // ["Tom", "Alice", "Kate", "Alice", "Kate"]

Этот метод изменяет исходный массив и возвращает его.

Проверка наличия элемента

Метод includes() в JavaScript предназначен для проверки наличия определенного значения в массиве. Если значение присутствует, метод возвращает true, если отсутствует – false. Вот пример использования:

const people = ["Tom", "Sam", "Bob", "Tom", "Alice", "Sam"];
console.log(people.includes("Tom")); // true - "Tom" есть в массиве
console.log(people.includes("Kate")); // false - "Kate" отсутствует в массиве

Метод includes() может принимать второй параметр – индекс, с которого начнется поиск:

const people = ["Tom", "Sam", "Bob", "Tom", "Alice", "Sam"];
console.log(people.includes("Bob", 2)); // true
console.log(people.includes("Bob", 4)); // false

Если второй параметр не передается, поиск начинается с индекса 0. Также можно использовать отрицательные значения для начала поиска с конца массива.

Проверка условий в массиве: Методы every(), some(), filter()Метод every():

Метод every() проверяет, соответствуют ли все элементы массива заданному условию. Если все элементы удовлетворяют условию, возвращается true, в противном случае – false.

const numbers = [1, -12, 8, -4, 25, 42];
const passed = numbers.every(n => n > 0);
console.log(passed); // false

Метод some() проверяет, соответствует ли хотя бы один элемент массива заданному условию. Если хотя бы один элемент удовлетворяет условию, возвращается true, в противном случае – false.

const numbers = [1, -12, 8, -4, 25, 42];
const passed = numbers.some(n => n > 0);
console.log(passed); // true

Метод filter() создает новый массив, содержащий только те элементы, которые соответствуют заданному условию.

const numbers = [1, -12, 8, -4, 25, 42];
const filteredNumbers = numbers.filter(n => n > 0);
console.log(filteredNumbers); // [1, 8, 25, 42]

Функция-коллбек в методе filter() возвращает true для элементов, которые должны быть включены в новый массив, и false для тех, которые не должны.

Поиск в массиве: Методы find(), findLast(), findIndex(), findLastIndex()

Метод find() в JavaScript возвращает первый элемент массива, который удовлетворяет заданному условию. Он принимает в качестве параметра функцию-условие:

const numbers = [1, 2, 3, 5, 8, 13, 21, 34];
// Получаем первый элемент, который больше 10
let found = numbers.find(n => n > 10);
console.log(found); // 13

Если элемент, соответствующий условию, не найден, метод возвращает undefined.

Метод findLast() аналогичен find(), но возвращает последний элемент массива, который соответствует условию:

const numbers = [1, 2, 3, 5, 8, 13, 21, 34];
// Получаем последний элемент, который меньше 10
let found = numbers.findLast(n => n < 10);
console.log(found); // 8

Метод findIndex() также принимает функцию-условие и возвращает индекс первого элемента массива, удовлетворяющего условию:

const numbers = [1, 2, 3, 5, 8, 13, 21, 34];
// Получаем индекс первого элемента, который больше 10
let foundIndex = numbers.findIndex(n => n > 10);
console.log(foundIndex); // 5
Если элемент не найден, метод возвращает -1.

Метод findLastIndex() аналогичен findIndex(), но возвращает индекс последнего элемента массива, который соответствует условию:

const numbers = [1, 2, 3, 5, 8, 13, 21, 34];
// Получаем индекс последнего элемента, который меньше 10
let foundIndex = numbers.findLastIndex(n => n < 10);
console.log(foundIndex); // 4

Эти методы полезны при поиске конкретных элементов или их индексов в массиве в соответствии с заданным условием.

Заключение

Использование методов массивов в JavaScript позволяет легко и эффективно управлять данными. От добавления новых элементов до поиска и удаления – эти операции обеспечивают гибкость при работе с массивами. Разнообразие методов предоставляет программистам мощные инструменты для обработки данных в массивах в соответствии с их потребностями.

Назад
Следующий тест
Комментарии
Чтобы оставлять комментарии — надо авторизоваться
Комментариев еще нет
Будьте первым
Главная
Курсы
Блог
Меню