JSFiddle - React, Tailwind, and code Playground

by JinHan Heo

Babel + JSX

let nodes = [{
        'id': 1,
        'uuid': "number1",
        'nodes': [{
            'id': 2,
            'uuid': "number1",
            'nodes': [{
                'id': 3,
                'uuid': "number1",
                'nodes': [{
                    'id': 3,
                    'uuid': "number1",
                    'nodes': [{
                        'id': 4,
                        'uuid': "number1"
                    }]
                }]
            }]
        }]
    },
    {
        'id': 5,
        'uuid': "number1",
        'nodes': [{
            'id': 6,
            'uuid': "number1",
            'nodes': [{
                'id': 7,
                'uuid': "number1",
                'nodes': [{
                    'id': 8,
                    'uuid': "number1",
                    'nodes': [{
                        'id': 9,
                        'uuid': "number1"
                    }]
                }]
            }]
        }]
    }
];

function* findNode(nodes, id) {
  for (let node of nodes) {
    node.id === id && (yield node)
    node.nodes && (yield* findNode(node.nodes, id))
  }
}

console.log(findNode(nodes, 5).next().value)
const [...a] = [...findNode(nodes, 5)];
console.log(a)