Введение
В этом практическом занятии мы будем изучать концепцию нахождения индекса последней вставки в отсортированном массиве на основе заданной итераторной функции с использованием JavaScript. В практическом занятии будут рассмотрены методы проверки, является ли массив отсортированным по убыванию, применения итераторной функции ко всем элементам массива и нахождения соответствующего последнего индекса, куда должен быть вставлен элемент, исходя из заданной итераторной функции. В конце практического занятия вы получите более глубокое понимание того, как манипулировать массивами и использовать итераторные функции в JavaScript.
Как найти индекс последней вставки в отсортированном массиве на основе функции
Для начала работы с кодом откройте Терминал/SSH и введите node.
Вот, как найти наибольший индекс, по которому значение должно быть вставлено в массив, чтобы сохранить его сортировку, на основе заданной итераторной функции:
- Проверьте, отсортирован ли массив по убыванию.
- Используйте
Array.prototype.map(), чтобы применить итераторную функцию ко всем элементам массива. - Используйте
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, чтобы улучшить свои навыки.