function merge(key, ...arrs) {
const getKey = key instanceof Function ? key : n => n[key];
const result = new Map;
arrs.forEach(arr => arr.forEach(n => {
const k = getKey(n);
result.set(k, Object.assign(result.get(k) ?? {}, n));
}));
return [...result.values()];
}
const result = merge('id', arr1, arr2, arr3);
. const res = [...a, ...b, ...c] // склеили
const logicalFunction = (acc, item)=>{
if(acc[item.id]){
// попытка мержа , merge напиши сам
acc[item.id] = merge(acc[item.id], item);
} else {
acc[item.id] = item;
}
return acc;
}
const obj = res.reduce(logicalFunction, {});
const final = Object.values(obj).sort((a,b)=b.id-a.id)