JSFiddle - React, Tailwind, and code Playground

by Aides

JavaScript

nodes = [
  {
    "label": "Root",
    "children": [
      {
        "label": "Parent",
        "children": [
          {
            "label": "Child",
            "treffer": true
          }
        ]
      }
    ]
  },
  {
    "label": "Root 2",
    "children": [
      {
        "label": "Parent 2",
        "children": [
          {
            "label": "Child ohne Treffer",
            "treffer": false
          }
        ]
      }
    ]
  }
];

// Nodes ergänzen, wenn es ein Treffer gibt
for(var i = 0; i < nodes.length; i++)
{
	setHitRecursive(nodes[i]);
}

function setHitRecursive(node){
  //TODO: fix for all iteratables or array specific
  if(node.children && node.children.length)
  {
  	for(var i = 0; i < node.children.length; i++)
    {
    	var treffer = setHitRecursive(node.children[i]);
      if(treffer)
      {
      	node.treffer = true;
      }
    }
  }
  return node.treffer;
}

// Nodes nach dem Überarbeiten
console.log(nodes);