UNPKG

ice.fo.utils

Version:

29 lines (25 loc) 545 B
/** * Merge 2 array and remove previous duplicate * * @param {any[]} a * @param {any[]} b * @param {(any) => string} indicator * @returns */ export default function mergeUnique(a, b, indicator = (i) => i.id) { const result = []; const dict = {}; a.forEach((i, index) => { result.push(i); dict[indicator(i)] = index; }); b.forEach((i) => { const foundIndex = dict[indicator(i)]; if (foundIndex != null) { result.splice(foundIndex, 1, i); } else { result.push(i); } }); return result; }