2016-10-09 8 views
0

Я считаю, что то, чего я пытаюсь достичь, похоже на HTTP-патч или функцию расширенного расширения, но я хочу достичь этого с помощью rxjs. Скажем, у меня есть следующие объекты:Патч-объекты с RXJS

const arr1 = { 
    obj1: { a: 'dog', b: 'cat', c: 'bird' }, 
    obj2: { a: 'boy', b: 'girl', c: 'guitar' }, 
    obj3: { a: '1', b: '2', c: '3' } 
} 

const arr2 = { 
    obj1: { a: 'wolf', b: 'lion', c: 'hawk', z: 'bear' }, 
    obj2: { c: 'car'} 
} 

Затем я хочу использовать rxjs для того, чтобы получить следующий вывод:

const output = { 
    obj1: { a: 'wolf', b: 'lion', c: 'hawk', z: 'bear' }, 
    obj2: { a: 'boy', b: 'girl', c: 'car' }, 
    obj3: { a: '1', b: '2', c: '3' } 
} 

Есть ли эффективный способ для достижения этой цели?

+1

Можете ли вы объяснить свое дело дальше? Каковы причины использования RxJS здесь? Если все части данных являются объектами и доступны в один кусок в текущий момент времени, я не вижу, что он должен делать с RxJS. Это просто глубокое слияние/расширение, которое приходит в кучу разных вкусов (кстати, это объекты объектов, а не массивы). – estus

ответ

1

RxJS не для объединения объектов, это An API for asynchronous programming with observable streams

Если вы хотите объединить объекты, которые вы можете использовать Lodash merge

var object = { 
    'a': [{ 'b': 2 }, { 'd': 4 }] 
}; 

var other = { 
    'a': [{ 'c': 3 }, { 'e': 5 }] 
}; 

_.merge(object, other); 
// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } 

или распространение объекта оператора (официально не поддерживается) https://babeljs.io/docs/plugins/transform-object-rest-spread/

Смежные вопросы