Последний индекс вставки в отсортированном массиве

Beginner

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

Введение

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

Как найти индекс последней вставки в отсортированном массиве на основе функции

Для начала работы с кодом откройте Терминал/SSH и введите node.

Вот, как найти наибольший индекс, по которому значение должно быть вставлено в массив, чтобы сохранить его сортировку, на основе заданной итераторной функции:

  1. Проверьте, отсортирован ли массив по убыванию.
  2. Используйте Array.prototype.map(), чтобы применить итераторную функцию ко всем элементам массива.
  3. Используйте Array.prototype.reverse() и Array.prototype.findIndex(), чтобы найти соответствующий последний индекс, куда должен быть вставлен элемент, на основе заданной итераторной функции.

Посмотрите на код ниже:

const sortedLastIndexBy = (arr, n, fn) => {
  const isDescending = fn(arr[0]) > fn(arr[arr.length - 1]);
  const val = fn(n);
  const index = arr
    .map(fn)
    .reverse()
    .findIndex((el) => (isDescending ? val <= el : val >= el));
  return index === -1 ? 0 : arr.length - index;
};

Вот пример:

sortedLastIndexBy([{ x: 4 }, { x: 5 }], { x: 4 }, (o) => o.x); // 1

Резюме

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