Вы можете написать функцию mergeObj, которая на основе трех условий возвращает желаемый результат
Первый случай - Concat : вам необходимо объединить два объекта.Вы можете просто использовать Object.assign
, чтобы сделать это
Второй регистр слева : отображение на ключи первого объекта и, если значение присутствует во втором наборе объектов, которые еще возвращают значение первого объектасам.
Третий случай - справа Просто верните второй объект
const input1 = {a: 'la', b: 'lb'};
const input2 = {a: 'ra', c: 'rc'};
function mergeObj(inp1, inp2, type) {
if(type === 'concat') {
return Object.assign({}, inp1, inp2);
}
if (type === 'left') {
return Object.assign({}, ...Object.entries(inp1).map(([k, val]) => ({[k]: inp2[k] || val})));
}
if (type === 'right') {
return Object.assign({}, inp2);
}
}
// concat
console.log(mergeObj(input1, input2, 'concat')); // output: {a: 'ra', b: 'lb', c: 'rc'}
// left
console.log(mergeObj(input1, input2, 'left')); // output: {a: 'ra', b: 'lb'}
// right
console.log(mergeObj(input1, input2, 'right')); // output: {a: 'ra', c: 'rc'}