Underscore.js Find and return element in nested array

javascript, underscore.js

Solution

- Pluck the `children` keys from your top level objects

- Flatten the resulting array

- Find the first object matching the condition, e.g having the correct id

- Chain these operations

which leads to

var res = _(data).chain().
    pluck('children').
    flatten().
    findWhere({id: 3}).
    value();

And a demo

var data = [
    {
        "name": "AAAA",
        "children": [
            {"name": "vvv", "id": 3},
            {"name": "vvv22", "id": 4}
        ]
    },
    {
        "name": "BBBB",
        "children": [
            {"name": "ggg", "id": 5},
            {"name": "ggggv22", "id": 6}
        ]
    }
];
var res = _(data).chain().
    pluck('children').
    flatten().
    findWhere({id: 3}).
    value();
    
console.log(res);
<script src="http://underscorejs.org/underscore-min.js"></script>

Problem

I have data-structure like this: ``` [ { "name": "AAAA", "children": [ {"name": "vvv", "id": 3}, {"name": "vvv22", "id": 4} ] }, { "name": "BBBB", "children": [ {"name": "ggg", "id": 5}, {"name": "ggggv22", "id": 6} ] }, ] ``` And I want to find and return child with given ID. How to achieve this using Underscore.js? My current realisation without using Underscore: ``` for (var i = 0; i < data.length; i++) { var dataItem= data[i]; for (var j = 0; j < dataItem.children.length; j++) { var child = dataItem.children[j]; if (child .id == id) { return child; } } } ```

Original source