Search code examples
javascriptdomnodesparentchildren

JS How to get the deepest (last) children of a node


I want to get all children of a node and use .click() method on them in JS.


Solution

  • I didn't found any better than write this script, hope it help someone:

    const getLastChildren = (parent: Element): Element[] => {
      return Array.from(parent.children).reduce<Element[]>((acc, node) => {
        const children = Array.from(node.children);
        if (children.length === 0) {
          acc.push(node);
          return acc;
        }
        return [...acc, ...getLastChildren(node)];
      }, []);
    };
    

    (without typescript):

    const getLastChildren = (parent) => {
      return Array.from(parent.children).reduce((acc, node) => {
        const children = Array.from(node.children);
        if (children.length === 0) {
          acc.push(node);
          return acc;
        }
        return [...acc, ...getLastChildren(node)];
      }, []);
    };