deep picking

by epinapala

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

JavaScript

var data = {
    "label": "SomeName",
    "parent": [{
            "id": "parentId",
            "resources": [{
                    "name": "ID1NAME",
                    "calls": [
                        "user_get", "user2_post", "user3_delete"
                    ]
                }, {
                    "name": "ID2",
                    "calls": [
                        "employee1_get", "employee2_delete", "employee3_update"
                    ]
                }]
        }]
};

//Using an element which is a part of data.parent.calls[] (example : "user_get") I would like to extract it's parent object, i.e. data.parent[0].

function findCallIndexInParent(call, parent) {
    return _.chain(parent)
            .pluck('resources')
            .flatten()
            .findIndex(function (obj) {
                return _.contains(obj.calls, call);
            })
            .value();
}

function findCall(call, data) {
    var parent = data.parent;
    return parent[findCallIndexInParent(call, parent)];
}

console.log(findCall('user_get', data));