Допустим, у меня есть следующие два объекта
object1: {
CustomerId: 1,
CustomerData: [1,2,3,4]
}
object2: {
CustomerId: 2,
CustomerData: [11,22,33,44]
CustomerOrders: [5,6,7,8]
}
Теперь мне нужно объединить два объекта, используя следующую бизнес-логику
Если какой-либо объект содержит CustomerId, то это должно переопределитьсвойства другого объекта.Например, если два объекта были
object1: {
CustomerId: 1,
CustomerData: [1,2,3,4]
}
object2: {
CustomerData: [11,22,33,44]
CustomerOrders: [5,6,7,8]
}
Поскольку object2 не содержит CustomerId, окончательный объединенный объект должен выглядеть следующим образом
mergedObject: {
CustomerId: 1,
CustomerData: [1,2,3,4],
CustomerOrders: [5,6,7,8]
}
Примечание * Я сохранил CustomerData объекта1 и неobject2, так как для object2 отсутствует customerId.
Я собираюсь использовать оператор распространения ES6 для достижения этой цели.Поэтому я буду использовать что-то вроде этого
const mergedObject = {...val1, ...val2}
Моя проблема в том, что то, что стоит первым в {}, определяется в отношении того, какой объект содержит customerId.Там в данный момент у меня есть условие if, которое проверяет, найден ли customerId в объекте, а затем присваивает object2, так как это переопределит другое.поэтому у меня есть что-то вроде этого
if (object1.customerId){
val2 = object1;
val1 = object2;
} else if (object2.customerId){
val2 = object2;
val1 = object1;
}
Это очень долго и, на мой взгляд, некрасиво, есть ли лучший способ сделать это в самом операторе распространения / конструктора?
const mergedObject = {...val1, ...val2} //Do it here itself