How to get two led strips to run same code independently?

I want to get a second set of led's and button to do the same thing as the first set but independently.

so basically:
Two strips of neopixel LED's and two sets of buttons.
Each button to control an led strip so I can easily set each one to be a different color.

Right now I'm trying to modify the "buttoncycler" script found in the NeoPixel Examples to do this. I haven't gotten very far since I have no idea where to start and I only have them set to be one color, but I want to add some looping animations or mixed colors later.

I'm using this for a costume prop, but I don't know very much when it comes to the programming side of things, just some very basic editing.

// Simple demonstration on using an input device to trigger changes on your
// NeoPixels. Wire a momentary push button to connect from ground to a
// digital IO pin. When the button is pressed it will change to a new pixel
// animation. Initial state has all pixels off -- press the button once to
// start the first animation. As written, the button does not interrupt an
// animation in-progress, it works only when idle.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Digital IO pin connected to the button. This will be driven with a
// pull-up resistor so the switch pulls the pin to ground momentarily.
// On a high -> low transition the button press logic will execute.
#define BUTTON_PIN   3
#define BUTTON_PIN   4

#define PIXEL_PIN    0  // Digital IO pin connected to the NeoPixels.
#define PIXEL_PIN2   1  // Digital IO pin connected to the NeoPixels.

#define PIXEL_COUNT 4  // Number of NeoPixels

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

boolean oldState = HIGH;
int     mode     = 0;    // Currently-active animation mode, 0-9

void setup() {
  #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  strip.begin(); // Initialize NeoPixel strip object (REQUIRED)
  strip.show();  // Initialize all pixels to 'off'
}

void loop() {
  // Get current button state.
  boolean newState = digitalRead(BUTTON_PIN);

  // Check if state changed from high to low (button press).
  if((newState == LOW) && (oldState == HIGH)) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState = digitalRead(BUTTON_PIN);
    if(newState == LOW) {      // Yes, still low
      if(++mode > 8) mode = 0; // Advance to next mode, wrap around after #8
      switch(mode) {           // Start the new animation...
        case 0:
          colorWipe(strip.Color(  0,   0,   0), 50);    // Black/off
          break;
        case 1:
          colorWipe(strip.Color(255,   0,   0), 50);    // Red
          break;
        case 2:
          colorWipe(strip.Color(  0, 255,   0), 50);    // Green
          break;
        case 3:
          colorWipe(strip.Color(  0,   0, 255), 50);    // Blue
          break;
        case 4:
          colorWipe(strip.Color(226, 245, 20), 50); // yellow
          break;
        case 5:
          colorWipe(strip.Color(29, 138, 42), 50); // darker green
          break;
        case 6:
          colorWipe(strip.Color(28, 240, 255), 50); // aqua?
          break;
        case 7:
          colorWipe(strip.Color(245, 20, 215), 50); // pink
          break;
        case 8:
          colorWipe(strip.Color(242, 174, 15), 50); // orange
          break;
      }
    }
  }

  // Set the last-read button state to the old state.
  oldState = newState;
}

// Fill strip pixels one after another with a color. Strip is NOT cleared
// first; anything there will be covered pixel by pixel. Pass in color
// (as a single 'packed' 32-bit value, which you can get by calling
// strip.Color(red, green, blue) as shown in the loop() function above),
// and a delay time (in milliseconds) between pixels.
void colorWipe(uint32_t color, int wait) {
  for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
    strip.setPixelColor(i, color);         //  Set pixel's color (in RAM)
    strip.show();                          //  Update strip to match
    delay(wait);                           //  Pause for a moment
  }
}

// Theater-marquee-style chasing lights. Pass in a color (32-bit value,
// a la strip.Color(r,g,b) as mentioned above), and a delay time (in ms)
// between frames.
void theaterChase(uint32_t color, int wait) {
  for(int a=0; a<10; a++) {  // Repeat 10 times...
    for(int b=0; b<3; b++) { //  'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in steps of 3...
      for(int c=b; c<strip.numPixels(); c += 3) {
        strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show(); // Update strip with new contents
      delay(wait);  // Pause for a moment
    }
  }
}

// Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
void rainbow(int wait) {
  // Hue of first pixel runs 3 complete loops through the color wheel.
  // Color wheel has a range of 65536 but it's OK if we roll over, so
  // just count from 0 to 3*65536. Adding 256 to firstPixelHue each time
  // means we'll make 3*65536/256 = 768 passes through this outer loop:
  for(long firstPixelHue = 0; firstPixelHue < 3*65536; firstPixelHue += 256) {
    for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip...
      // Offset pixel hue by an amount to make one full revolution of the
      // color wheel (range of 65536) along the length of the strip
      // (strip.numPixels() steps):
      int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
      // strip.ColorHSV() can take 1 or 3 arguments: a hue (0 to 65535) or
      // optionally add saturation and value (brightness) (each 0 to 255).
      // Here we're using just the single-argument hue variant. The result
      // is passed through strip.gamma32() to provide 'truer' colors
      // before assigning to each pixel:
      strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
    }
    strip.show(); // Update strip with new contents
    delay(wait);  // Pause for a moment
  }
}

// Rainbow-enhanced theater marquee. Pass delay time (in ms) between frames.
void theaterChaseRainbow(int wait) {
  int firstPixelHue = 0;     // First pixel starts at red (hue 0)
  for(int a=0; a<30; a++) {  // Repeat 30 times...
    for(int b=0; b<3; b++) { //  'b' counts from 0 to 2...
      strip.clear();         //   Set all pixels in RAM to 0 (off)
      // 'c' counts up from 'b' to end of strip in increments of 3...
      for(int c=b; c<strip.numPixels(); c += 3) {
        // hue of pixel 'c' is offset by an amount to make one full
        // revolution of the color wheel (range 65536) along the length
        // of the strip (strip.numPixels() steps):
        int      hue   = firstPixelHue + c * 65536L / strip.numPixels();
        uint32_t color = strip.gamma32(strip.ColorHSV(hue)); // hue -> RGB
        strip.setPixelColor(c, color); // Set pixel 'c' to value 'color'
      }
      strip.show();                // Update strip with new contents
      delay(wait);                 // Pause for a moment
      firstPixelHue += 65536 / 90; // One cycle of color wheel over 90 frames
    }
  }
}

First of all code goes in code tags, not into a table.

Since you have 2 strips, you need to duplicate everything to do with the LED strips, button states etc.

// Simple demonstration on using an input device to trigger changes on your
// NeoPixels. Wire a momentary push button to connect from ground to a
// digital IO pin. When the button is pressed it will change to a new pixel
// animation. Initial state has all pixels off -- press the button once to
// start the first animation. As written, the button does not interrupt an
// animation in-progress, it works only when idle.

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

// Digital IO pin connected to the button. This will be driven with a
// pull-up resistor so the switch pulls the pin to ground momentarily.
// On a high -> low transition the button press logic will execute.
#define BUTTON_PIN1   3
#define BUTTON_PIN2  4

#define PIXEL_PIN1    0  // Digital IO pin connected to the NeoPixels.
#define PIXEL_PIN2   1  // Digital IO pin connected to the NeoPixels.

#define PIXEL_COUNT 4  // Number of NeoPixels

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip1(PIXEL_COUNT, PIXEL_PIN1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2(PIXEL_COUNT, PIXEL_PIN2, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

boolean oldState1 = HIGH;
boolean oldState2 = HIGH;
int     mode1     = 0;    // Currently-active animation mode, 0-9
int     mode2     = 0;    // Currently-active animation mode, 0-9

void setup() {
  #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  pinMode(BUTTON_PIN1, INPUT_PULLUP);
  pinMode(BUTTON_PIN2, INPUT_PULLUP);
  strip1.begin(); // Initialize NeoPixel strip object (REQUIRED)
  strip1.show();  // Initialize all pixels to 'off'
  strip2.begin(); // Initialize NeoPixel strip object (REQUIRED)
  strip2.show();  // Initialize all pixels to 'off'
}

void loop() {
  // Get current button state.
  boolean newState1 = digitalRead(BUTTON_PIN1);
  boolean newState2 = digitalRead(BUTTON_PIN2);

  // Check if state changed from high to low (button press).
  if((newState1 == LOW) && (oldState1 == HIGH)) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState1 = digitalRead(BUTTON_PIN1);
    if(newState1 == LOW) {      // Yes, still low
      if(++mode1 > 8) mode1 = 0; // Advance to next mode, wrap around after #8
      switch(mode1) {           // Start the new animation...
        case 0:
          colorWipe1(strip1.Color(  0,   0,   0), 50);    // Black/off
          break;
        case 1:
          colorWipe1(strip1.Color(255,   0,   0), 50);    // Red
          break;
        case 2:
          colorWipe1(strip1.Color(  0, 255,   0), 50);    // Green
          break;
        case 3:
          colorWipe1(strip1.Color(  0,   0, 255), 50);    // Blue
          break;
        case 4:
          colorWipe1(strip1.Color(226, 245, 20), 50); // yellow
          break;
        case 5:
          colorWipe1(strip1.Color(29, 138, 42), 50); // darker green
          break;
        case 6:
          colorWipe1(strip1.Color(28, 240, 255), 50); // aqua?
          break;
        case 7:
          colorWipe1(strip1.Color(245, 20, 215), 50); // pink
          break;
        case 8:
          colorWipe1(strip1.Color(242, 174, 15), 50); // orange
          break;
      }
    }
  }
  // Check if state changed from high to low (button press).
  if((newState2 == LOW) && (oldState2 == HIGH)) {
    // Short delay to debounce button.
    delay(20);
    // Check if button is still low after debounce.
    newState2 = digitalRead(BUTTON_PIN2);
    if(newState2 == LOW) {      // Yes, still low
      if(++mode2 > 8) mode2 = 0; // Advance to next mode, wrap around after #8
      switch(mode2) {           // Start the new animation...
        case 0:
          colorWipe2(strip2.Color(  0,   0,   0), 50);    // Black/off
          break;
        case 1:
          colorWipe2(strip2.Color(255,   0,   0), 50);    // Red
          break;
        case 2:
          colorWipe2(strip2.Color(  0, 255,   0), 50);    // Green
          break;
        case 3:
          colorWipe2(strip2.Color(  0,   0, 255), 50);    // Blue
          break;
        case 4:
          colorWipe2(strip2.Color(226, 245, 20), 50); // yellow
          break;
        case 5:
          colorWipe2(strip2.Color(29, 138, 42), 50); // darker green
          break;
        case 6:
          colorWipe2(strip2.Color(28, 240, 255), 50); // aqua?
          break;
        case 7:
          colorWipe2(strip2.Color(245, 20, 215), 50); // pink
          break;
        case 8:
          colorWipe2(strip2.Color(242, 174, 15), 50); // orange
          break;
      }
    }
  }

  // Set the last-read button state to the old state.
  oldState1 = newState1;
  oldState2 = newState2;
}

// Fill strip pixels one after another with a color. Strip is NOT cleared
// first; anything there will be covered pixel by pixel. Pass in color
// (as a single 'packed' 32-bit value, which you can get by calling
// strip.Color(red, green, blue) as shown in the loop() function above),
// and a delay time (in milliseconds) between pixels.
void colorWipe1(uint32_t color, int wait) {
  for(int i=0; i<strip1.numPixels(); i++) { // For each pixel in strip...
    strip1.setPixelColor(i, color);         //  Set pixel's color (in RAM)
    strip1.show();                          //  Update strip to match
    delay(wait);                           //  Pause for a moment
  }
}

void colorWipe2(uint32_t color, int wait) {
  for(int i=0; i<strip2.numPixels(); i++) { // For each pixel in strip...
    strip2.setPixelColor(i, color);         //  Set pixel's color (in RAM)
    strip2.show();                          //  Update strip to match
    delay(wait);                           //  Pause for a moment
  }
}

With the way the example is written with all the delays it probably will be very unresponsive. Code not tested, maybe it will work to some degree, maybe not. Good luck.

I wasn't sure how to put in the code tag, but I fixed that up now thanks XD

Thanks so much for the help!
At first when I tested it the 2nd strip just went red, but I ended up switching the button pin from 4 to 2 and it works like a charm!

Now I can mess around with the rest of the code and see what neat effects I can get with it.