Найти последние N совпадений

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы изучим концепцию нахождения последних n элементов, удовлетворяющих заданному условию, в массиве. Мы узнаем, как использовать цикл for для перебора массива и выполнения заданной функции для каждого элемента. Также мы узнаем, как использовать метод Array.prototype.unshift() для добавления соответствующих элементов в начало результирующего массива и возврата его, когда достигнута требуемая длина.

Инструкции по нахождению последних N совпадений

Для нахождения последних n элементов, соответствующих определенному условию, следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте функцию findLastN, предоставленную ниже.
  3. Предоставьте массив arr и функцию matcher, которая возвращает истинное значение для элементов, которые вы хотите найти.
  4. По желанию вы также можете указать количество n совпадений, которые вы хотите вернуть (по умолчанию равно 1).
  5. Функция выполнит функцию matcher для каждого элемента arr с использованием цикла for, начиная с последнего элемента.
  6. Если элемент соответствует условию matcher, он будет добавлен в результирующий массив с использованием Array.prototype.unshift(), который добавляет элементы в начало массива.
  7. Когда длина результирующего массива равна n, функция вернет результат.
  8. Если совпадений нет или n больше количества совпадений, будет возвращен пустой массив.
const findLastN = (arr, matcher, n = 1) => {
  let res = [];
  for (let i = arr.length - 1; i >= 0; i--) {
    const el = arr[i];
    const match = matcher(el, i, arr);
    if (match) res.unshift(el);
    if (res.length === n) return res;
  }
  return res;
};

Ниже приведены примеры использования функции findLastN:

findLastN([1, 2, 4, 6], (n) => n % 2 === 0, 2); // [4, 6]
findLastN([1, 2, 4, 6], (n) => n % 2 === 0, 5); // [2, 4, 6]

Резюме

Поздравляем! Вы завершили практическое занятие "Найти последние N совпадений". Вы можете выполнить больше практических заданий в LabEx, чтобы улучшить свои навыки.