Sobes.tech
Назад к вопросам
Middle+
2

/** * @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]

Компании, где спрашивали
Basis

Ответ от нейросети

sobes.tech AI

Функция 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]

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