Я пытаюсь объединить два массива (на основе идентификатора) и сгладить один из объектов. Я посмотрел и не нашел ничего похожего.
Вот что я пытаюсь сделать и чего добился:
const a = {
someProperty: 'something',
anotherProperty: 'somethingelse',
listOfUsers: [
{ id: 100, a1: 'somea1', a2: 'somea2'},
{ id: 101, a1: 'somea1', a2: 'somea2'},
{ id: 102, a1: 'somea1', a2: 'somea2'},
{ id: 103, a1: 'somea1', a2: 'somea2'}
]
}
const b = [
{ id: 100, b1: { b2: 'someB2', b3: 'someB3'}},
{ id: 101, b1: { }}, //can be empty,
{ id: 102, b1: { b2: undefined, b3: 'someB3'}}, //b2 can be undefined
{ id: 103, b1: { b2: 'someB2', b3: 'someB3'}}
]
const aAndB = a.listOfUsers.map(item => ({
...item,
b_role: { ...b.find((itemInner) => itemInner.id === item.id) }
}));
Это дает мне:
{
id: 100, a1: 'somea1', a2: 'somea2',
b_role: {b2: 'someB2', b3: 'someB3'}
}
// if nothing is found:
{
id: 100, a1: 'somea1', a2: 'somea2',
b_role: {}
}
Но я хочу:
{
id: 100, a1: 'somea1', a2: 'somea2',
b_role: 'someB2' // I want b.b2 but b can be empty
}
// if nothing is found:
{
id: 100, a1: 'somea1', a2: 'somea2',
b_role: undefined
}
Как мне это сделать? Я могу использовать подчеркивание, если это помогает