मैं किसी विशेष भूमिका के आधार पर सूची को फ़िल्टर करने का प्रयास कर रहा हूं, एक भूमिका सरणी में टाइप करें, जो वस्तुओं की एक सरणी है।

नीचे मेरा जेसन है

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 }
        ]
    }
];

मैं उन वस्तुओं को प्राप्त करने का प्रयास कर रहा हूं जिनमें रोल टाइप 1 है। तो मेरे उदाहरण के लिए, इसे केवल पहली वस्तु वापस करनी चाहिए क्योंकि इसकी भूमिका सूची में केवल पहली वस्तु की भूमिका प्रकार 1 है।

मैंने नीचे कोशिश की, लेकिन यह काम नहीं किया

this.rolesData.filter(data => {
    data.roles.filter(role => {
        if (role.roleType == 1) {
          return role;
        }
    });
});
0
indra257 4 अक्टूबर 2018, 22:56

1 उत्तर

सबसे बढ़िया उत्तर

.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;
});
0
Vlad274 4 अक्टूबर 2018, 20:24