Вернуть каждый n-й элемент массива JavaScript
Добавить в избранноеКогда возникает необходимость создать новый массив, содержащий только каждый н-й элемент из существующего массива, метод Array.prototype.filter() может стать полезным инструментом. В этой статье мы рассмотрим, как это сделать, используя JavaScript.
Метод Array.prototype.filter()
Метод filter() создаёт новый массив со всеми элементами, которые прошли проверку, задаваемую в предоставленной функции.
Синтаксис:
arr.filter(callback(element, index, array), thisArg);
callback - Функция, которая будет вызвана для каждого элемента массива. Возвращает true, чтобы сохранить элемент, и false - чтобы его отбросить.
element - Текущий обрабатываемый элемент массива.
index - Индекс текущего обрабатываемого элемента массива.
array - Массив, по которому происходит проход.
thisArg - Необязательный параметр. Значение, используемое в качестве this при вызове функции callback.
Пример использования filter() для получения каждого н-го элемента
Теперь рассмотрим, как использовать метод filter(), чтобы получить каждый н-й элемент из массива. В качестве примера мы создадим функцию everyNth.
Реализация функции everyNth
Функция everyNth принимает два параметра:
arr - исходный массив.
nth - число, обозначающее, каждый н-й элемент которого нужно включить в новый массив.
const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1);
Объяснение работы функции
1.
Параметры функции:
arr - массив, из которого мы будем выбирать элементы.
nth - число, обозначающее каждый н-й элемент.
2.
Функция обратного вызова в filter():
e - текущий элемент массива (в данном случае он не используется непосредственно).
i - индекс текущего элемента массива.
i % nth === nth - 1 - логическое выражение, проверяющее, является ли текущий индекс (i) таким, что он на одну позицию меньше кратного значения nth.
Пример использования
console.log(everyNth([1, 2, 3, 4, 5, 6], 2)); // [2, 4, 6]
Разберём его по шагам:
1. Исходный массив: [1, 2, 3, 4, 5, 6]
2. nth = 2 - это значит, что мы хотим каждый второй элемент.
3. Индексы элементов в массиве: [0, 1, 2, 3, 4, 5]
4. Выражение i % nth === nth - 1 проверяет:
Для индекса 1: 1 % 2 === 1 (true)
Для индекса 3: 3 % 2 === 1 (true)
Для индекса 5: 5 % 2 === 1 (true)
5. Следовательно, элементы на этих индексах (2, 4, 6) будут включены в новый массив.
Давайте создадим два примера, чтобы лучше понять, как работает функция everyNth. В этих примерах мы создадим два массива и используем everyNth для извлечения каждого н-го элемента.
// Функция для выбора каждого n-го элемента массива const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === nth - 1); // Пример 1: Каждый второй элемент const array1 = [10, 20, 30, 40, 50, 60, 70, 80]; const result1 = everyNth(array1, 2); console.log("Пример 1:"); console.log("Исходный массив:", array1); console.log("Каждый второй элемент:", result1); // Пример 2: Каждый третий элемент const array2 = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]; const result2 = everyNth(array2, 3); console.log("\nПример 2:"); console.log("Исходный массив:", array2); console.log("Каждый третий элемент:", result2);
Результаты выполнения
Для Примера 1:
Исходный массив: [10, 20, 30, 40, 50, 60, 70, 80]
Каждый второй элемент: [20, 40, 60, 80]
Для Примера 2:
Исходный массив: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
Каждый третий элемент: [15, 30, 45]
Использование метода Array.prototype.filter() для создания нового массива, содержащего каждый н-й элемент, является простым и эффективным решением. Функция everyNth позволяет легко и быстро получить нужные элементы без необходимости вручную перебирать массив и выбирать нужные индексы.
Это решение подходит для множества задач, где требуется выборка элементов по определённому интервалу, и является отличным примером использования функциональных возможностей JavaScript.