Вернуть каждый 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.

Обсуждение закрыто.