Фильтр данных JSON

Я использую PrimeNG TreeTable для отображения данных иерархии из файла JSON. Я хочу отфильтровать эти данные перед привязкой к treetable.

Ниже приведен пример данных JSON.

{
"data":
[
    {
        "data":{
            "name":"Documents",
            "size":"75kb",
            "type":"Folder"
        },
        "children":[
            {
                "data":{
                    "name":"Work",
                    "size":"55kb",
                    "type":"Folder"
                },
                "children":[
                    {
                        "data":{
                            "name":"Expenses.doc",
                            "size":"30kb",
                            "type":"Document"
                        }
                    },
                    {
                        "data":{
                            "name":"Resume.doc",
                            "size":"25kb",
                            "type":"Resume"
                        }
                    }
                ]
            },
            {
                "data":{
                    "name":"Home",
                    "size":"20kb",
                    "type":"Folder"
                },
                "children":[
                    {
                        "data":{
                            "name":"Invoices",
                            "size":"20kb",
                            "type":"Text"
                        }
                    }
                ]
            }
        ]
    },
    {
        "data":{
            "name":"Pictures",
            "size":"150kb",
            "type":"Folder"
        },
        "children":[
            {
                "data":{
                    "name":"barcelona.jpg",
                    "size":"90kb",
                    "type":"Picture"
                }
            },
            {
                "data":{
                    "name":"primeui.png",
                    "size":"30kb",
                    "type":"Picture"
                }
            },
            {
                "data":{
                    "name":"optimus.jpg",
                    "size":"30kb",
                    "type":"Picture"
                }
            }
        ]
    }
]

}

Я хочу привязать только узел "Домой" к древовидной таблице.

Я попробовал ниже ссылки, но не получил результат.

Фильтровать данные json в узле js Фильтровать данные в файле JSON

1 ответ

Вы можете использовать фильтр. Например вот так:

var yourData = {
   "data": [
        //...
    ]
};
var res = [];

Array.prototype.push.apply(res, yourData.data.filter(function (el) {
    return el.data.name === "Home";
});

Array.prototype.push.apply(res, yourData.data.children.filter(function (el) {
    return el.data.name === "Home";
});

Вам просто нужно адаптировать условия к вашим потребностям (в зависимости от того, насколько глубоким может быть ваш атрибут "Дом"). Если вы скажете, что четыре шага глубже, вы, вероятно, могли бы лучше деформировать отдельные инструкции фильтра в цикле через свойства, такие как ["data", "data.children", ...] с соответствующей функцией доступа.

Другие вопросы по тегам