У меня есть массив объектов. Я хочу объединить объекты в массиве с тем же атрибутом 'label'. С моим кодом (вставленным ниже) я могу объединиться, но объединение происходит по всему массиву объектов, а не по объектам в массиве.
var pages= [
{
name: "page1",
list:{
fields:[
{name: "sHist", label: "Range", type: "long", searchable: false},
{name: "sFuture", label: "Range", type: "long", searchable: false},
{name: "ordersinPage1", label: "Orders", type: "long", searchable: false}
]
}
},
{
name: "page2",
list:{
fields:[
{name: "needs", label: "Needs", type: "long", searchable: false},
{name: "fulfil", label: "Fulfill", type: "long", searchable: false},
{name: "ordersinPage2", label: "Orders", type: "long", searchable: false}
]
}
}
]
Код, который я пробовал ниже:
let seen={};var totalFieldsObject ;
pages.map((graphPage) => {
totalFieldsObject = graphPage.list.fields.filter((entry) => {
if (seen.hasOwnProperty(entry.label)) {
let previous;
previous = seen[entry.label];
previous.name.push(entry.name);
return false;
}
if (!Array.isArray(entry.name)) {
entry.name = [entry.name];
}
seen[entry.label] = entry;
return true;
});
});
console.log(pages)
Ожидаемый результат:
var exprectedOutput=[
{
name: "page1",
list:{
fields:[
{name: ["sHist","sFuture"], label: "Range", type: "long", searchable: false},
{name: ["ordersinPage1"], label: "Orders", type: "long", searchable: false}
]
}
},
{
name: "page2",
list:{
fields:[
{name: ["needs"], label: "Needs", type: "long", searchable: false},
{name: ["fulfil"], label: "Fulfill", type: "long", searchable: false},
{name: ["ordersinPage2"], label: "Orders", type: "long", searchable: false}
]
}
},
]