JSFiddle - React, Tailwind, and code Playground

by TekVanDo

HTML

<script src="http://underscorejs.ru/underscore-min.js"></script>

JavaScript

var roleList1 = [{
    "roleName": "User",
    "roleId": "role1",
    "children": [{
        "roleName": "subUser1",
        "roleId": "role11",
        "children": []
    }, {
        "roleName": "subUser2",
        "roleId": "role12",
        "children": [{
            "roleName": "subUser2-1",
            "roleId": "role121",
            "children": [{
                "roleName": "subUser2-1-1",
                "roleId": "role1211",
                "children": []
            }, {
                "roleName": "subUser2-1-2",
                "roleId": "role1212",
                "children": []
            }]
        }]
    }]
},

{
    "roleName": "Admin",
    "roleId": "role2",
    "children": []
},

{
    "roleName": "Guest",
    "roleId": "role3",
    "children": []
}];

console.log();

var recursiveFilter = function(x,prop,searchText) {
    console.log(x);
    return x.prop == searchText || 
        ( typeof x.children != 'undefined' && recursiveFilter(x.children,prop,searchText) );
};

even = _.filter(roleList1, recursiveFilter(x,"roleName","role1211"));
console.log(even);