ice.fo.utils
Version:
29 lines (25 loc) • 545 B
JavaScript
/**
* 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;
}