How to duplicate a series of values through an array

Right now, i have some code:

void chasing() {


  unsigned long currentInterval = 100;
  unsigned long now = millis ();
  static int j;
  
  if (now - chasingStartTime >= currentInterval)  // if it's time to increment
  {
    if(j < NUM_LEDS){ //and j is less than the total number of pixels
      j = j + 1; //go ahead and increment
    } else j = 0; //if we are at the end, lets start over
   chasingStartTime = now;  //reset timer
  }
  // end of if
    if (FunctionForEachPixel (j, 7)) {
   //7 represents the function "chasing", I use it to make sure that each zone is running its program (if zone1function and function both = 7, this function will run. 
      leds[j].r = 0;
      leds[j].b = 255;
      leds[j].g = 0;
    }
    if (FunctionForEachPixel (j + 1, 7)) {
      leds[j + 1].r = 0;
      leds[j + 1].b = 255;
      leds[j + 1].g = 0;
    }
   if (FunctionForEachPixel (j + 2, 7)) { 
      leds[j + 2].r = 0;
      leds[j + 2].b = 255;
      leds[j + 2].g = 0;
   }
   if (FunctionForEachPixel (j + 3, 7)) {
      leds[j + 3].r = 255;
      leds[j + 3].b = 0;
      leds[j + 3].g = 0;
   }
   if (FunctionForEachPixel (j + 4, 7)) {
      leds[j + 4].r = 255;
      leds[j + 4].b = 0;
      leds[j + 4].g = 0;
   }
   if (FunctionForEachPixel (j + 5, 7)) {
      leds[j + 5].r = 255;
      leds[j + 5].b = 200;
      leds[j + 5].g = 255;
   }
   if (FunctionForEachPixel (j + 6, 7)) {
      leds[j + 6].r = 255;
      leds[j + 6].b = 200;
      leds[j + 6].g = 255;
    }
  }

which checks if it's time to increment a variable j (which represents a space in the array), if it is time, j is incremented by one.

outside the timer, i display information to the LEDS, adding values to j to write a "sequence", which is moved along the strip when j is incremented.

the sequence is only drawn to the strip if FunctionForEachPixel returns true. That function checks to see if the pixel function that is currently being ran (in this case, chasing) matches up with the selected zone (also chasing in this case), for a specific range of j (the zones).

here is that function:

bool FunctionForEachPixel (byte icNumber, int Function)
{ 
  if (icNumber <= LastZone1Pixel &&  Function1 == Function) return true ; //function 2 is the selected function for zone 1
  if (icNumber > LastZone1Pixel && icNumber <= LastZone2Pixel && Function2 == Function) return true ;
  if (icNumber > LastZone2Pixel && icNumber <= LastZone3Pixel && Function3 == Function) return true ;
  if (icNumber > LastZone3Pixel && icNumber <= LastZone4Pixel && Function4 == Function) return true ;
  return false ;
}

The issue i'm having is that the "blue" fills the led pixels, and then the red and the white only show up as the movement along the strip. I'd like to have it where it displays "RED RED BLUE BLUE WHITE WHITE RED RED BLUE BLUE WHITE WHITE" ect, so that would mean duplicating the series i have written for all values of j.

Is there a easy way to do this?

I've attached my entire code below
VVVVVVV

_6803_LED_box2.ino (18.3 KB)

Is this not possible or is my question unclear?

To me it us unclear.
Can you please explain the problem a different way, perhaps with examples of what happens now and what you want to do ?