У меня есть несколько объектов в массиве.Каждому из них назначен labelId.Если идентификатор метки совпадает, то мне нужно объединить объекты, поместив некоторые значения в массив нового объединенного объекта.
[
{
field: "legalName",
isOpened: false,
label: "Legal Name",
labelId: 1,
value: "John Doe"
},
{
field: "homeAddress1",
isOpened: false,
label: "Home Address",
labelId: 2,
value: "2343 Main Street"
},
{
field: "homeAddress2",
isOpened: false,
label: "Home Address",
labelId: 2,
value: "New York, NY"
}
]
Как я хочу, чтобы это выглядело
[
{
isOpened: false,
label: "Legal Name",
labelId: 1,
values:
[
{field: "legalName", value: "John Doe"}
]
},
{
isOpened: false,
label: "Home Address",
labelId: 2,
values:
[
{field: "homeAddress1", value: "2343 Main Street"},
{field: "homeAddress2", value: "New York, NY"}
]
}
]
Я удаляю поле и значение из исходного объекта и помещаю его в массив значений для всех объектов, независимо от того,имеют одинаковый labelId.
Код до сих пор -
personalInfoArray.forEach(info => {
personalInfoArray.forEach(info2 => {
if ((info.labelId === info2.labelId) && (info.field !== info2.field)) {
info.values = [
{field: info.field, value: info.value},
{field: info2.field, value: info2.value}
]
}
})
})
Я перебираю один и тот же массив дважды, чтобы определить, имеет ли объект одинаковый labelId, в случае успеха - создать массив.Проблема в том, что я не удаляю свойства, а другой объект все еще существует.Если у них нет одинакового labelId, ничего не происходит.
Спасибо