DeepFind

by Trae

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
Result:
<br />
<textarea id="output" rows="10"></textarea>

CSS

textarea {
  width: 100%
}

JavaScript

function findDeep(data, collectionName, find, value) {
  var found;
  data = _(data);
  while (!found && data.any()) {
    found = data.find(find, value);
    data = data.map(collectionName).flatten();
  }

  return found;
}

var value = findDeep(data(), "tree", {
  "name": "name6"
});
$("#output").text(JSON.stringify(value));
console.log(value);

function data() {
  return [{
    name: "name1",
    tree: [{
      name: "name2"
    }, {
      name: "name3"
    }, {
      name: "name4",
      tree: [{
        name: "name5"
      }, {
        name: "name6",
        tree: [{
          name: "name12"
        }, {
          name: "name13"
        }, {
          name: "name14",
          tree: [{
            name: "name15"
          }, {
            name: "name16"
          }]
        }, {
          name: "name17"
        }]
      }, {
        name: "name18",
        tree: [{
          name: "name19"
        }]
      }]
    }, {
      name: "name7"
    }]
  }, {
    name: "name8",
    tree: [{
      name: "name9"
    }]
  }];

}