Фильтрация вложенных объектов - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь отфильтровать список на основе определенного roleType в массиве ролей, который является массивом объектов.

Ниже мой json

this.rolesData =  [{
         "firstName": "Francis",
         "lastName": "Underwood",
         "middleName": "",
         "title": { "titleId": "1", "titleName": "AA" },
         "roles": [
             {"roleGuid" : 1,  "roleType" : 1 },  
             { "roleGuid" : 2,  "roleType" : 3 }
        ]
    },
    {
        "firstName": "Claire",
        "lastName": "Underwood",
        "middleName": "",
        "title": { "titleId": "2", "titleName": "BB" },
        "roles": [
            {"roleGuid" : 1,  "roleType" : 2 },  
            { "roleGuid" : 2,  "roleType" : 3 }, 
            { "roleGuid" : 3, "roleType" : 4 }
        ]
    }
];

Я пытаюсьполучить элементы, у которых есть roleType 1.поэтому для моего примера он должен возвращать только первый объект, так как только первый объект имеет roleType 1. в своем списке ролей.

Я пробовал ниже, но это не сработало

this.rolesData.filter(data => {
    data.roles.filter(role => {
        if (role.roleType == 1) {
          return role;
        }
    });
});

1 Ответ

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

.filter должна принимать функцию, которая будет возвращать true или false для данного элемента.

const results = this.rolesData.filter(data => {
    // Filter to matching roles
    const matchingRoles = data.roles.filter(role => {
        return role.roleType == 1;
    });
    // Return true if matching roles are found
    return matchingRoles && matchingRoles.length > 0;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...