Search code examples
javascriptarraysdomforeachnodelist

Javascript: using foreach on multiple arrays at once


I have 2 arrays or more likely NodeLists,

const mainSlides = document.querySelectorAll('.mainSlides')
const thumbSlides = document.querySelectorAll('.thumbSlides')

Currently i am iterating over them like this:


mainSlides.forEach(slide => {
    slide.style.backgroundColor = `red`
})

thumbSlides.forEach(slide => {
    slide.style.backgroundColor = `red`
})

Since they both set the same property ie; background-color:red;, is there a shorthand way to loop through both nodelists at once?

const mainSlides = document.querySelectorAll('.mainSlides')
const thumbSlides = document.querySelectorAll('.thumbSlides')

mainSlides.forEach(slide => {
    slide.style.backgroundColor = `red`
})

thumbSlides.forEach(slide => {
  //  slide.style.backgroundColor = `red`
})
<div class="holder">
  <div class="mainSlides"> some mainSlides </div>
  <div class="mainSlides"> some mainSlides </div>
  <div class="mainSlides"> some mainSlides </div>
  <div class="mainSlides"> some mainSlides </div>
</div>

 <div class="holder">  
  <div class="thumbSlides"> some mainSlides </div>
  <div class="thumbSlides"> some mainSlides </div>
  <div class="thumbSlides"> some mainSlides </div>
  <div class="thumbSlides"> some mainSlides </div>
</div>


Solution

  • You can select both mainSlides and thumbSlides like so:

    const allSlides = document.querySelectorAll('.mainSlides, .thumbSlides');
    

    Or, if you don't want to select them together (e.g. if you want to use them further separately) but just want to use them together for this specific action:

    const allSlides = [...mainSlides, ...thumbSlides];
    allSlides.forEach(slide => {
        slide.style.backgroundColor = 'red';
    })