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