ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [javascript] 목록 엘리먼트에 오름차순/내림차순 정렬 기능 넣기(with sort 함수)
    JavaScript 2022. 7. 2. 23:03
    반응형

    중요 포인트는

    1. 배열을 자바스크립트 sort메소드로 정렬한다.

    2. 제이쿼리로 엘리먼트를 그린다.


    데이터의 형태

            let dummy = [
                {'dt' : "2022-01-04", 'team' : 'C'}
                , {'dt' : "2022-03-04", 'team' : 'B'}
                , {'dt' : "2022-02-01", 'team' : 'C'}
                , {'dt' : "2022-04-04", 'team' : 'D'}
                , {'dt' : "2022-01-04", 'team' : 'A'}
                , {'dt' : "2022-05-04", 'team' : 'A'}
                , {'dt' : "2022-06-04", 'team' : 'D'}
                , {'dt' : "2022-07-02", 'team' : 'C'}
            ]

    처음 디폴트 목록

    오름차순 정렬

    내림차순 정렬

    전체소스

    <!DOCTYPE html>
        <html lang="ko">
        <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>자바스립트 공부</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
            <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js"></script>
            <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
            <style>
                ul.mylist, ol.mylist {
                    list-style: none;
                    margin: 0px;
                    padding: 0px;
                
                    max-width: 250px;
                    width: 100%;
                }
                ul.mylist li, ol.mylist li {
                    padding: 5px 0px 5px 5px;
                    margin-bottom: 5px;
                    border-bottom: 1px solid #efefef;
                    font-size: 12px;
                }
                ul.mylist li:last-child,
                ol.mylist li:last-child {
                    border-bottom: 0px;
                }
                ul.mylist li:before,
                ol.mylist li:before {
                    content: ">";
                    display: inline-block;
                    vertical-align: middle;
                    padding: 0px 5px 6px 0px;
                }
            </style>
        </head>
        <body>
            <button onclick="javascript:fn_create_list('asc');">오름차순 정렬하기</button>
            <button onclick="javascript:fn_create_list('desc');">내림차순 정렬하기</button>
            <ul class="mylist"></ul>
        <script>
    
            //임의로 만든 배열 객체
            let dummy = [
                {'dt' : "2022-01-04", 'team' : 'C'}
                , {'dt' : "2022-03-04", 'team' : 'B'}
                , {'dt' : "2022-02-01", 'team' : 'C'}
                , {'dt' : "2022-04-04", 'team' : 'D'}
                , {'dt' : "2022-01-04", 'team' : 'A'}
                , {'dt' : "2022-05-04", 'team' : 'A'}
                , {'dt' : "2022-06-04", 'team' : 'D'}
                , {'dt' : "2022-07-02", 'team' : 'C'}
            ]
            
            //최초 생성
            fn_create_list();
            
    
            /*********************************
            * @desc 오름차순으로 정렬하는 함수
            */
            function fn_date_ascending(a, b) {
                var dateA = new Date(a['dt']).getTime();
                var dateB = new Date(b['dt']).getTime();
                return dateA > dateB ? 1 : -1;
            };
    
            /*********************************
            * @desc 내림차순으로 정렬하는 함수
            */
            function fn_date_descending(a, b) {
                var dateA = new Date(a['dt']).getTime();
                var dateB = new Date(b['dt']).getTime();
                return dateA < dateB ? 1 : -1;
            };
            
            /*********************************
            * @desc 목록을 그리는 함수
            */
            function fn_create_list(type){
    
                //초기화
                $('.mylist').empty();
    
                //타입 변수가 없으면 기본 배열로 목록 생성
                if( type == "" || type == null){
                    dummy.forEach(function(v,i){
                        $(".mylist").append("<li>"+v.dt+"</li>");
                    });
                //내림차순일때
                }else if( type == "desc"){
                    dummy.sort(fn_date_descending).forEach(function(v,i){
                        $(".mylist").append("<li>"+v.dt+"</li>");
                    });
                //오름차순일때
                }else{
                    dummy.sort(fn_date_ascending).forEach(function(v,i){
                        $(".mylist").append("<li>"+v.dt+"</li>");
                    });                
                } 
    
            }
        </script>
        </body>
    </html>
    반응형

    댓글

Designed by Tistory.