Javascript реструктурировать массив объектов - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть следующий массив с 4 объектами:

var btnObj = [
    {sect_title: 'Navigation', btn_title: 'Übersicht'},
    {sect_title: 'Navigation', btn_title: 'Inhaltsverzeichnis'},
    {sect_title: 'Modul 1', btn_title: 'Lehrwerk'},
    {sect_title: 'Modul 1', btn_title: 'Prinzipien'},
]

Каждый из 2 различных заголовков разделов должен иметь по 2 заголовка btn, что приводит к:

var btnObjResult = [
    "Navigation" = [
        {btn_title: 'Übersicht'},
        {btn_title: 'Inhaltsverzeichnis'},

    ],
    "Modul 1" = [
        {btn_title: 'Lehrwerk'},
        {btn_title: 'Prinzipien'},
    ]
]

Iпросто не могу понять, как это сделать в JS.Большое спасибо за любую подсказку.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

    let btnObj = [
        {sect_title: 'Navigation', btn_title: 'Übersicht'},
        {sect_title: 'Navigation', btn_title: 'Inhaltsverzeichnis'},
        {sect_title: 'Modul 1', btn_title: 'Lehrwerk'},
        {sect_title: 'Modul 1', btn_title: 'Prinzipien'},
    ]
    let myData = {}; //if you need in array you can use myData = [];
    btnObj.forEach((d)=>{
    	if(!myData[d.sect_title]) myData[d.sect_title] = [];
    	myData[d.sect_title].push({btn_title:d.btn_title})
    })
    console.log(myData);
0 голосов
/ 26 ноября 2018

Наверное, это то, что вы ищете:

    var btnObj = [
        {sect_title: 'Navigation', btn_title: 'Übersicht'},
        {sect_title: 'Navigation', btn_title: 'Inhaltsverzeichnis'},
        {sect_title: 'Modul 1', btn_title: 'Lehrwerk'},
        {sect_title: 'Modul 1', btn_title: 'Prinzipien'},
    ]

    const transformedObj = btnObj.reduce((obj, {sect_title, ...rest}) => {
        if(!(sect_title in obj)) obj[sect_title] = [];
        obj[sect_title].push(rest);
        return obj;
    },  {});
    
    console.log(transformedObj);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...