자바스크립트

자바스크립트 내장함수 repeat 사용

개미는내일도뚠뚠 2022. 1. 19. 11:02

영화리뷰 사이트를 만들면서 각 영화의 평점(별5개)을 표시하려고 함.

스파르타코딩에서 제공해준 API 내용은 다음과 같음

movies : [

{

  comment : "~~~~",

  desc : "~~~~",

  image : "url",

  star : 4(또는 "4"),

  title : "영화제목"

},

...

]

 

이런식의 데이터를 불러옴. star키의 값으로 숫자가 들어있음. 처음에 생각한 것은 switch문이나 if를 사용해서 조건에따라 별을 입력해주는 방식이었음.

 

function listing() {
    $('#cards-box').empty();
    $.ajax({
        url: "http://spartacodingclub.shop/web/api/movie",
        data: {},
        type: "GET",
        success: function (data) {
            for (let i = 0; i < data['movies'].length; i++) {

                let star = '';
                if(data['movies'][i]['star'] == 1){
                    star = '⭐';
                }else if(data['movies'][i]['star'] == 2){
                    star = '⭐⭐';
                }else if(data['movies'][i]['star'] == 3){
                    star = '⭐⭐⭐';
                }else if(data['movies'][i]['star'] == 4){
                    star = '⭐⭐⭐⭐';
                }else if(data['movies'][i]['star'] == 5){
                    star = '⭐⭐⭐⭐⭐';
                }

                const temp_html = `<div class="col">
                                <div class="card">
                                    <img src="${data['movies'][i]['image']}"
                                         class="card-img-top" alt="...">
                                    <div class="card-body">
                                        <h5 class="card-title">${data['movies'][i]['title']}</h5>
                                        <p class="card-text">${data['movies'][i]['desc']}</p>
                                        <p>${star_image}</p>
                                        <p class="myComment">${data['movies'][i]['comment']}</p>
                                    </div>
                                </div>
                            </div>`;
                $('#cards-box').append(temp_html);
            }
        }
    })
}

if문을 작성하면서도 스스로 비효율적이라는 생각이 들었음. 'repeat를 사용하면 코드가 많이 줄어들고 간단하게 작성할 수 있었음.

const star_image = '⭐'.repeat(data['movies'][i]['star']);

10줄이 넘는 if문 코드를 이 한줄로 깔끔하게 정리