Want to get rid of delay() function, FastLED, PLEASE HELP

You could just replace the delay, with a timed loop where you check the button. If pressed then jump out and go onto the next pattern. It's effectively the same approach as per the solution in #3.

#include <FastLED.h>

#define NUM_STRIPS    3
#define NUM_LEDS      8
#define COLOR_ORDER   GRB
#define LED_TYPE      WS2812B


#define DELAY 100


CRGB leds[NUM_STRIPS][NUM_LEDS];

//Pin locations for LED strips
const int lowerLEDs = 5;
const int middleLEDs = 6;
const int upperLEDs = 7;

const int myButton = 8;

void setup() {
  delay(3000);      //For recovery

 //Add led strip arrays 
  FastLED.addLeds<LED_TYPE, lowerLEDs, COLOR_ORDER>(leds[0], NUM_LEDS);
  FastLED.addLeds<LED_TYPE, middleLEDs, COLOR_ORDER>(leds[1], NUM_LEDS);
  FastLED.addLeds<LED_TYPE, upperLEDs, COLOR_ORDER>(leds[2], NUM_LEDS);

//  currentTime = millis();

  pinMode (myButton, INPUT_PULLUP);
  
}

void loop() 
{

  pattern_1(); 
//pattern_2();
//pattern_3();  

}

void pattern_1()
{
   for(int x = 0; x < NUM_STRIPS; x++) 
   {
    for(int i = 0; i < NUM_LEDS; i++) 
    {
      leds[x][i] = CRGB::Red;
      FastLED.show();
      leds[x][i] = CRGB::Black;

      unsigned long onTime = millis();
      while (millis() - onTime < DELAY)
      {
        if (digitalRead(myButton) == LOW)
          return;
      }
    }
  }
}