Sobes.tech
Middle+

/** * @param {Array} prev * @param {Array} next * @param {(item: any) => string} keyFn * @returns {{ added: Array, removed: Array }} */ export function diffGeneric(prev, next, keyFn) { // write code here return { added: [], removed: [] }; } // prev = [1,2,3,4,6] // next = [2,3,4] // added = [] // removed = [1,6]

sobes.tech AI

Answer from AI

The diffGeneric function should compare two arrays prev and next based on a key obtained through keyFn, and return objects with elements that were added and removed.

Example implementation:

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 };
}

// Example:
// prev = [1,2,3,4,6]
// next = [2,3,4]
// keyFn = item => item.toString();
// added = []
// removed = [1,6]

Here, we create sets of keys for each array, then filter elements that are absent in the other array to get added and removed elements.