본문 바로가기
EFFECT/SEARCH

EFFECT | SEARCH | filter()를 이용하여 속성의 중요도 보여주기

by 코딩하자9 2022. 10. 17.
728x90

searchEffect | filter()를 이용하여 속성의 중요도 보여주기

오늘의 목표
💡 스크립트를 통해 속성 리스트를 나타내기
💡 중요도에 따라 리스트 나타내기

오늘의 미션
👉🏻 난이도 1개 이상, 2개 이상,... 버튼 구현하기


1. 사이트 구조 살펴보기

HTML 살펴보기

속성 목록은 자바스크립트로 표현해주기 위해 비워두었습니다.

<main id="main">
    <div class="search__wrap">
        <span>filter()를 이용하여 속성의 중요도 보여주기</span>
        <h1>CSS 속성 검색하기</h1>

        <div class="search__click">
            <ul>
                <li data-star="0"><a href="#">☆☆☆☆☆</a></li>
                <li data-star="1"><a href="#">★☆☆☆☆</a></li>
                <li data-star="2"><a href="#">★★☆☆☆</a></li>
                <li data-star="3"><a href="#">★★★☆☆</a></li>
                <li data-star="4"><a href="#">★★★★☆</a></li>
                <li data-star="5"><a href="#">★★★★★</a></li>
            </ul>
            <ul>
                <li data-num="1"><a href="#">1개 이상</a></li>
                <li data-num="2"><a href="#">2개 이상</a></li>
                <li data-num="3"><a href="#">3개 이상</a></li>
                <li data-num="4"><a href="#">4개 이상</a></li>
            </ul>
        </div>
        
        <div class="search__info">
            <div>
                CSS 속성 갯수 : <span class="num"></span>
            </div>
        </div>

        <div class="search__list">
            <ul class="line">

            </ul>
        </div>
    </div>
</main>

2. script 살펴보기

📌 속성 리스트 만들고 출력하기

속성 리스트는 cssProperty 내 배열 속 객체로 만들어주었고 map을 활용하여 출력해주었습니다.

📌 난이도 버튼에 따라 리스트 나타내기

아래 코드를 참고해주세요 !

<script>
    const cssProperty = [...]
    const searchList = document.querySelector(".search__list ul");
    const searchClick = document.querySelectorAll(".search__click ul li");

    // 출력하기 (재활용이 가능한 함수)
    function updateList(list){
        listCSS = '';

        // list 에서 받아온걸 data라고 칭할거다~
        for(const data of list){
            // listCSS += `<li>${data.name} : ${data.desc} <em>${data.star}</em></li>`;

            switch(data.star){
                case 0:
                    listCSS += `<li>${data.name} : ${data.desc} <em>☆☆☆☆☆</em></li>`;
                break;
                case 1:
                    listCSS += `<li>${data.name} : ${data.desc} <em>★☆☆☆☆</em></li>`;
                break;
                case 2:
                    listCSS += `<li>${data.name} : ${data.desc} <em>★★☆☆☆</em></li>`;
                break;
                case 3:
                    listCSS += `<li>${data.name} : ${data.desc} <em>★★★☆☆</em></li>`;
                break;
                case 4:
                    listCSS += `<li>${data.name} : ${data.desc} <em>★★★★☆</em></li>`;
                break;
                case 5:
                    listCSS += `<li>${data.name} : ${data.desc} <em>★★★★★</em></li>`;
                break;
                default:
                    listCSS += `<li>${data.name} : ${data.desc} <em>검색 결과가 없습니다.</em></li>`;
                break;
            }
        }

        searchList.innerHTML = listCSS;

        const searchLine = document.querySelectorAll(".search__list ul li");
        document.querySelector(".num").textContent=searchLine.length;
    }
    updateList(cssProperty);

    // 클릭하기
    searchClick.forEach(star => {
        star.addEventListener("click", () => {
            const targetStar = star.dataset.star;
            const targetNum = star.dataset.num;
            // find도 가능
            // filter callback 함수 사용
            const filterList = cssProperty.filter(data => data.star == targetStar || data.star >= targetNum);

            updateList(filterList);
        });
    });
</script>

'EFFECT > SEARCH' 카테고리의 다른 글

EFFECT | SEARCH | sort( ), reverse( )를 이용하여 정렬하기  (0) 2022.10.17
SEARCH | 검색 유형04  (6) 2022.09.29
SEARCH | 검색 유형03  (8) 2022.08.22
SITE | 검색유형 | includes( )  (2) 2022.08.17
SEARCH | 검색 유형01  (9) 2022.08.17

댓글


It's cording time

코딩 여기서 정리하고 배워보자구 :9

광고 준비중입니다.