У меня есть массив объектов
const mainArray = [{
name: 'main name',
id: 'main id',
parent: [{
name: 'parent name',
id: '1'
}],
child: [{
name: 'child name',
id: 'child id'
}]
}, {
name: 'main name 2',
id: 'main id 2',
parent: [{
name: 'parent name',
id: '1'
}],
child: [{
name: 'child name 2',
id: 'child id 2'
}]
},
{
name: 'main name 3',
id: 'main id 3',
parent: [{
name: 'parent name something else',
id: '2'
}],
child: [{
name: 'child name 3',
id: 'child id 3'
}]
}
]
Мне нужно привести его к этой форме
const resultArray = [{
key: 'main',
title: 'main name',
}, {
key: 'parent',
title: 'parent name'
}, {
key: 'child',
title: 'child name'
}]
Пока я получил это
if (mainArray) {
mainArray.map((main) => {
if (main.child && main.child.length) {
if (main.parent && main.parent.length) {
main.parent.map((item) => {
data.push({
key: 'parent',
title: item.name
});
});
}
data.push({
key: 'main',
title: main.name
});
main.child.map((item) => {
data.push({
key: 'child',
title: item.name
});
});
}
});
}
Итогда я беру это data array
, чтобы отобразить, если таблица, и она выглядит следующим образом
![enter image description here](https://i.stack.imgur.com/u9DSg.png)
Моя проблема в том, что два mains
могут быть разными, ноимеют один и тот же parent
(у родителей один и тот же ids
), и тогда мне не нужно добавлять родителя в массив два раза, и мне нужно, чтобы он отображался следующим образом
![enter image description here](https://i.stack.imgur.com/AujHA.png)
Итак, я ищу способ, если два parents
объекта имеют одинаковые id
, чтобы объединить их так, чтобы в конечном массиве был только один parent
и main
и child
этого родителя застревают к одному parent
вместо двух идентичных
Здесь ссылка на jsfiddle
я могуиспользуйте lodash