Список путей к объекту JSON, который отражает структуру папок - PullRequest
0 голосов
/ 25 октября 2018

Я создаю небольшую папку на основе CMS.Я использую php для извлечения всех путей к папке, и я хочу использовать javascript для создания веб-сайта.Я знаю, что могу делать все в php, но я более свободно владею javascript, и поэтому я бы хотел использовать это вместо php.В любом случае с php я получаю этот список:

0: {parent: "theater", child: "How_to_be_a_regisseur", text: "Project 1!↵Phasellus a quam non arcu accumsan rhon…ium leo ante, vitae volutpat diam consectetur in."}
1: {parent: "theater", child: "How_to_be_a_regisseur", img: "./content/theater/How_to_be_a_regisseur/img/download.jpeg"}
2: {parent: "theater", child: "How_to_be_a_regisseur", img: "./content/theater/How_to_be_a_regisseur/img/rsz_namibia_will_burrard_lucas_wwf_us_1.jpg"}
4: {parent: "theater", child: "WOOWW", text: "Project 1!↵Phasellus a quam non arcu accumsan rhon…ium leo ante, vitae volutpat diam consectetur in."}
...
12: {parent: "varia", child: "gggggg", text: "Project 1!↵Phasellus a 
13: {parent: "varia", child: "gggggg", img: "./content/varia/gggggg/img/download.jpeg"}
14: {parent: "varia", child: "gggggg", img: "./content/varia/gggggg/img/rsz_namibia_will_burrard_lucas_wwf_us_1.jpg"}
...
20: {parent: "about", child: null, img: "./content/about/img/download.jpeg"}

parent означает папку, child подпапку и img или text содержимое этой папки.Есть ли способ реструктурировать этот массив в массив объектов с этой структурой, в которой все parents становятся атрибутом, содержащим массив children, каждый из которых содержит различные объекты со ссылками на изображения или текст?

{
    theater: [
        How_to_be_a_regisseur: {
            img: "path",
            text: "blah blah"
        },
        WOOW: {
            img: "path",
            text: "blah blah"
        }
    ],
    varia:[...{[][]}]
}

1 Ответ

0 голосов
/ 25 октября 2018

var list = [
                { parent: "theater", child: "How_to_be_a_regisseur", text: "Project 1!↵Phasellus a quam non arcu accumsan rhon…ium leo ante, vitae volutpat diam consectetur in." },
                { parent: "theater", child: "How_to_be_a_regisseur", img: "./content/theater/How_to_be_a_regisseur/img/download.jpeg" },
                { parent: "theater", child: "How_to_be_a_regisseur", img: "./content/theater/How_to_be_a_regisseur/img/rsz_namibia_will_burrard_lucas_wwf_us_1.jpg" },
                { parent: "theater", child: "WOOWW", text: "Project 1!↵Phasellus a quam non arcu accumsan rhon…ium leo ante, vitae volutpat diam consectetur in." },
                { parent: "varia", child: "gggggg", text: "Project 1!↵Phasellus a "},
                { parent: "varia", child: "gggggg", img: "./content/varia/gggggg/img/download.jpeg"},
                { parent: "varia", child: "gggggg", img: "./content/varia/gggggg/img/rsz_namibia_will_burrard_lucas_wwf_us_1.jpg"},
                { parent: "about", child: null, img: "./content/about/img/download.jpeg"}
            ];
var new_list = list.reduce((accumulator, currentValue, currentIndex, array) => {
    var parent = currentValue.parent;
    var child = currentValue.child;
    if (!accumulator[parent]) {
        accumulator[parent] = [];
    }
    if (!accumulator[parent][child]) {
        accumulator[parent][child] = [];
    }
    accumulator[parent][child].push({
        text: currentValue.text,
        img: currentValue.img
    });
    return accumulator;
}, {});
console.log(new_list);

Каким-то образом я реструктурировал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...