each 반복문은 list와 map의 데이터를 반복할 때 사용된다.
이전에 공부한 for문은 규칙적으로 값이 변해야 한다는 한계가 있지만, each문은 list와 map에 대한 이해가 있다면 어떤 상황에서도 코드를 반복적으로 적지 않아도 될 만큼 유용하다.



/* 
@each $변수 in 데이터 {
  실행문
}
*/



list 데이터 반복하기


list는 배열(array)와 유사하다. 일반적으로 하나의 데이터를 저장하기 위해서 변수를 사용하는데, 여러개의 데이터를 저장할 때는 보통 list나 map을 사용한다.



$colors: (red, orange, yellow ,green);

.colors {
    @each $color in $colors {
        li.#{$color} {
            background: url(img/#{$color}.svg);
        }    
    }
}


css에서는 아래처럼 나타난다.


.colors li.red {
  background: url(img/red.svg);
}

.colors li.orange {
  background: url(img/orange.svg);
}

.colors li.yellow {
  background: url(img/yellow.svg);
}

.colors li.green {
  background: url(img/green.svg);
}



map 데이터 반복하기


map의 사용목적과 사용방법은 list와 유사하다. 차이점은 각 값마다 매칭되는 키 값이 있기 때문에 동적으로 접근할 수 있다.


/* 
@each $key변수, $value변수 in 데이터 {
  실행문
}
*/

map 데이터를 반복 할 때는 하나의 데이터에 두개의 변수가 필요하다.


$colors-data: (
    red: first,
    orange: second,
    yellow: third,
    green: fourth
);

@each $color, $order in $colors-data {
    .colors {
        li.color-#{$color} {
            background: url(img/#{$order}.svg);
        }
    }
}


css에서는 아래처럼 나타난다.


.colors li.color-red {
  background: url(img/first.svg);
}

.colors li.color-orange {
  background: url(img/second.svg);
}

.colors li.color-yellow {
  background: url(img/third.svg);
}

.colors li.color-green {
  background: url(img/fourth.svg);
}