* @param {Array} prev

Функция diffGeneric должна сравнить два массива prev и next по ключу, получаемому через keyFn, и вернуть объекты с элементами, которые были добавлены и удалены.

Короткий ответ

Что ответить на собеседовании

Функция diffGeneric должна сравнить два массива prev и next по ключу, получаемому через keyFn, и вернуть объекты с элементами, которые были добавлены и удалены.

Подробный разбор

Ответ с пояснениями

Условие

/**

  • @param {Array} prev
  • @param {Array} next
  • @param {(item: any) => string} keyFn
  • @returns {{ added: Array, removed: Array }} */ export function diffGeneric(prev, next, keyFn) { // пишем код тут

return { added: [], removed: [] }; }

// prev = [1,2,3,4,6] // next = [2,3,4]

// added = [] // removed = [1,6]

Ответ

Функция diffGeneric должна сравнить два массива prev и next по ключу, получаемому через keyFn, и вернуть объекты с элементами, которые были добавлены и удалены.

Пример реализации:

export function diffGeneric(prev, next, keyFn) {
  const prevKeys = new Set(prev.map(keyFn));
  const nextKeys = new Set(next.map(keyFn));

  const added = next.filter(item => !prevKeys.has(keyFn(item)));
  const removed = prev.filter(item => !nextKeys.has(keyFn(item)));

  return { added, removed };
}

// Пример:
// prev = [1,2,3,4,6]
// next = [2,3,4]
// keyFn = item => item.toString();
// added = []
// removed = [1,6]

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку