Это действительно более общий вопрос Javascript, поскольку подобные древовидные структуры могут появляться где угодно. Предполагая, что эта структура находится на подпорках, и что вы пытаетесь вернуть вложенный объект сам, я бы, вероятно, сделал что-то вроде этого.
search(value) {
// search recursively, return value or keep searching
checkBranch = function(branch) {
branch.forEach(leaf => {
if (leaf.id === value) {
return leaf;
if (leaf.branch) {
return checkBranch(leaf.branch);
}
});
//whatever this is called in your props
checkBranch(this.props.tree)
}