• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 16 분 상품정렬 기능 만들기 숙제풀이 & 응용문제

16 분 상품정렬 기능 만들기 숙제풀이 & 응용문제

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #10636

    이정미
    참가자

    안녕하세요 선생님 질문이 있습니다.

    sort 함수를 쓰기 위해 어레이 사본을 만들었는데  가격순 정렬, 가나다 정렬이 안되는데 이유를 모르겠습니다.
    6만원 이하 버튼을 누르면 상품 두개만 나오는게 아니라 기존 상품 3개 옆에 2개가 같이 나와요 

    밑에 코드 첨부할께요 

    <div class="card-group container">
    <!-- <div class="card">
    <img src="https://via.placeholder.com/600">
    <div class="card-body">
    <h5 class="title">Card title</h5>
    <p class="price">가격 : 70000</p>
    <button class="btn btn-danger">주문하기</button>
    </div>
    </div>
    <div class="card">
    <img src="https://via.placeholder.com/600">
    <div class="card-body">
    <h5 class="title">Card title</h5>
    <p class="price">가격 : 70000</p>
    <button class="btn btn-danger">주문하기</button>
    </div>
    </div>
    <div class="card">
    <img src="https://via.placeholder.com/600">
    <div class="card-body">
    <h5 class="title">Card title</h5>
    <p class="price">가격 : 70000</p>
    <button class="btn btn-danger">주문하기</button>
    </div>
    </div> -->
    </div>
    <div class="container my-4">
    <button class="btn btn-danger" id="sortPrice">가격순정렬</button>
    <button class="btn btn-primary" id="abc">가나다정렬</button>
    <button class="btn btn-primary" id="filter">6만원이하</button>
    </div>
     
    <script>
    var products = [
    { id : 0, price : 70000, title : 'Blossom Dress' },
    { id : 1, price : 50000, title : 'Springfield Shirt' },
    { id : 2, price : 60000, title : 'Black Monastery' }
    ];
    var products2 = [...products];

    products.forEach(function(a){
    var template = `<div class="card">
    <img src="https://via.placeholder.com/600">
    <div class="card-body">
    <h5 class="title">${a.title}</h5>
    <p class="price">${'가격 : ' + a.price}</p>
    <button class="btn btn-danger">주문하기</button>
    </div>
    </div>`;
    $('.card-group').append(template)
    })

     

    $('#sortPrice').click(function(){
    products2.sort(function(a,b){
    return a.price - b.price;
    })
    상품목록()
    });

    $('#abc').click(function(){
    products2.sort(function(a,b){
    if (a.title < b.title == true){
    return -1
    } else {
    return 1
    }
    })
    상품목록();
    });

    $('#filter').click(function(){
    var 새상품 = products.filter(function(a){
    return a.price <= 60000
    });
    새상품.forEach(function(a){
    var template = `<div class="card">
    <img src="https://via.placeholder.com/600">
    <div class="card-body">
    <h5 class="title">${a.title}</h5>
    <p class="price">${'가격 : ' + a.price}</p>
    <button class="btn btn-danger">주문하기</button>
    </div>
    </div>`;
    $('.card-group').append(template)
    })
    });

    function 상품목록(){
    $('.title').eq(0).html(products[0].title);
    $('.price').eq(0).html('가격 : ' + products[0].price);
     
    $('.title').eq(1).html(products[1].title);
    $('.price').eq(1).html('가격 : ' + products[1].price);
     
    $('.title').eq(2).html(products[2].title);
    $('.price').eq(2).html('가격 : ' + products[2].price);
    }

    </script>

    #10637

    codingapple
    키 마스터

    왜냐면 지금 products2를 sort 하셨는데

    데이터를 html에 꽂아넣을 땐 products를 사용했기 때문이 아닐까요 

    필터버튼을 누르면

    1. array에서 상품2개만 남겨주세요

    2. 상품2개를 html로 만들어서 저기다 추가해주세요

    라고 작성했기 때문에 기존에 있던 상품3개랑 합해서 총 5개가 되는 것입니다 

     

    #10675

    이정미
    참가자

    선생님 말씀하신 것처럼 데이터를 html에 넣을때 products2로 고치니 가나다 정렬 가격순 정렬은 되는데 여전히 6만원 이하는 5개가 나오는데요 그러면 6만원 이하 2개만 나오게 하려면 어떤 코드를 짜야할지 모르겠어요 ㅠㅠ

    #10679

    codingapple
    키 마스터

    필터버튼누르면 기존에 있던 상품목록 html을 전부 비우는 코드추가는 어떨까요 

    $(상품목록담은div).html(' ') 이러면 비워질거같은디요 

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠