Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.
Задача в код-редакторе: есть два массива, полученных с разных серверов, в каждом массиве записи с уникальными сквозными id (не повторяющимися между массивами). Нужно написать функцию, которая принимает эти два массива и число k, и возвращает k элементов с наибольшими id в порядке убывания.
Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.
Для числовых конечных id и целого неотрицательного k:
function topById(a, b, k) {
if (!Number.isInteger(k) || k < 0) throw new RangeError('k');
return [...a, ...b].sort((x, y) => y.id - x.id).slice(0, k);
}
Исходные массивы не изменяются; при k больше длины вернутся все элементы. Сложность O(n log n). Если оба источника уже упорядочены, можно сливать только нужные k элементов; для очень большого неупорядоченного набора подойдёт min-heap размера k.