Middle+
26
/** * @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
AI-дан жауап
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]
Мұнда біз әр массив үшін кілттер жиынтығын құрамыз, содан кейін басқа массивте жоқ элементтерді сүзгіден өткізіп, қосылған және жойылған элементтерді аламыз.