Only change top-level mesh (traverse?)

I am trying to change materials on a selected object, without affecting the material of its children, somehow the traverse function is not allowing me to return from the traverse function. I need this code to execute only on the first material found in the group (which in every case ‘should’ be the parent of the other objects.) However I can’t seem to find a way to cancel the traverse function. even with a return statement…

this.intersects is of type THREE.Intersection[].

  ChangeColor(color: THREE.Color) {
    if (this.intersects.length > 0) {
      (this.intersects[0].object as THREE.Group).traverse((child: THREE.Mesh) => {
        if (child.isMesh) {
          (child.material as Material).color = color;
          console.log('test');
          return;
        }
      });
    }
  }

That was a bit of a f**k-up on my part. If I need the first child why am I traversing.

  ChangeColor(color: THREE.Color) {
    if (this.intersects.length > 0) {
      ((this.intersects[0].object as THREE.Mesh).material as Material).color = color;
    }
  }