Работа с массивом объектов, таких как:
const activities = [{
id: 11129,
recap: {
id: 11129,
recapValues: [
{
id: 1,
internalName: 'Foo',
},
{
id: 2,
internalName: 'Bar',
},
{
id: 6,
internalName: 'Bongo',
},
],
},
},
{
id: 11130,
recap: {
id: 11130,
recapValues: [
{
id: 4,
internalName: 'Bingo',
},
{
id: 5,
internalName: 'Bango',
},
{
id: 6,
internalName: 'Bongo',
},
],
},
}]
Моя цель - добавить ключ responseOptions
и constraints
к каждому вложенному объекту recapValues
путем сопоставления ключа internalName
измассив ссылочных объектов, например:
const questions = [{
internalName: 'Foo',
responseOptions: null,
constraints: {
date: {},
},
},
{
internalName: 'Bar',
responseOptions: {},
constraints: null,
},
{
internalName: 'Bango',
responseOptions: null,
constraints: null,
},
{
internalName: 'Bingo',
responseOptions: {},
constraints: null,
},
{
internalName: 'Bongo',
responseOptions: null,
constraints: {
time: {},
},
}]
Для ожидаемого результата:
[{
id: 11129,
recap: {
id: 11129,
recapValues: [
{
id: 1,
internalName: 'Foo',
responseOptions: null,
constraints: {
date: {},
},
},
{
id: 2,
internalName: 'Bar',
responseOptions: {},
constraints: null,
},
{
id: 6,
internalName: 'Bongo',
responseOptions: {},
constraints: {
time: {},
},
},
],
},
},
{
id: 11130,
recap: {
id: 11130,
recapValues: [
{
id: 4,
internalName: 'Bingo',
responseOptions: null,
constraints: null,
},
{
id: 5,
internalName: 'Bango',
responseOptions: {},
constraints: null,
},
{
id: 6,
internalName: 'Bongo',
responseOptions: {},
constraints: {
time: {},
},
},
],
},
}]
Моя попытка привела к приведенному ниже коду, который добавляет только ключи responseOptions
и constraints
один раз для каждого recapValues
объекта, а не для каждого отдельного вопроса внутри recapValues
:
activities.map(activity => ({
...activity,
recap: {
...activity.recap,
recapValues: [
...activity.recap.recapValues,
...activity.recap.recapValues
.forEach(q => questions
.find(obj => obj.internalName === q.internalName)),
],
},
}))
Что мне не хватает, что мешает желаемому результату?