๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
EFFECT

[EFFECT] ๊ฒ€์ƒ‰ ํšจ๊ณผ05 : sort(), reverse()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜๊ธฐ

by _ํ† ๋งคํ†  2022. 10. 17.
728x90

๐Ÿ” ๊ฒ€์ƒ‰ ํšจ๊ณผ : sort(), reverse()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜๊ธฐ

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” sort(), reverse() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํด๋ฆญํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์กฐ๊ฑด์œผ๋กœ ์†์„ฑ์„ ์ •๋ ฌํ•˜๋Š” ์‹ค์Šต์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
+ ์ถ”๊ฐ€๋กœ ๋žœ๋ค์œผ๋กœ ์†์„ฑ์ด ์ •๋ ฌ๋˜๋Š” ์‹ค์Šต๋„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค......... ๐Ÿฅฒ


#1. HTML / CSS ์„ค์ •ํ•˜๊ธฐ

! HTML TIP !
search__click์—์„œ li ์š”์†Œ์—๊ฒŒ data-๋ฐ์ดํ„ฐ๋ช…="๋ฐ์ดํ„ฐ ๊ฐ’"์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. => ์ถ”ํ›„ ์Šคํฌ๋ฆฝํŠธ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ! (ํด๋ฆญ์ด๋ฒคํŠธ, ์ˆซ์ž ์น˜ํ™˜)

โœ๏ธ HTML ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ
<main id="main">
    <div class="search__wrap">
        <span>sort(), reverse()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜๊ธฐ</span>
        <h1>CSS ์†์„ฑ ๊ฒ€์ƒ‰ํ•˜๊ธฐ</h1>

        <div class="search__click">
            <ul>
                <li class="btn1"><a href="#">๋ฐ˜๋Œ€๋กœ ์ •๋ ฌ</a></li>
                <li class="btn2"><a href="#">๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ</a></li>
                <li class="btn3"><a href="#">์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ</a></li>
                <li class="btn4"><a href="#">์•ŒํŒŒ๋ฒณ์ˆœ(a-z)</a></li>
                <li class="btn5"><a href="#">์•ŒํŒŒ๋ฒณ์ˆœ(z-a)</a></li>
                <li class="btn6"><a href="#">๋žœ๋ค ์ •๋ ฌ</a></li>
            </ul>
        </div>

        <div class="search__info">
            <div>CSS ์ „์ฒด ์†์„ฑ : <span class="num">0</span></div>
        </div>

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

! CSS TIP !
๋ฒ„ํŠผ์˜ ์Šคํƒ€์ผ ๋ฐ ํŽ˜์ด์ง€ ์Šคํƒ€์ผ์„ ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

โœ๏ธ CSS ์Šคํฌ๋ฆฝํŠธ ๋ณด๊ธฐ
.search__click {
    margin-top: 10px;
    margin-bottom: 30px;
}

.search__click li {
    display: inline;
}

.search__click li a {
    display: inline-block;
    border: 1px solid var(--htmlColor);
    border-radius: 50px;
    padding: 10px 20px;
    margin: 5px 0;
}

.search__click li a:hover {
    background-color: var(--htmlColor);
    color: #fff;

#2. JAVASCRIPT : ์Šคํฌ๋ฆฝํŠธ

์ด๋ฒˆ ์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” sort(), reverse() ๋ฉ”์„œ๋“œ, ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์—…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ์Šคํฌ๋ฆฝํŠธ ์ฃผ์„๊ณผ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!

! JAVASCRIPT TIP !
1. ์žฌํ™œ์šฉ ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ณด๋‹ค ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ๋ณ€์ˆ˜๋ช….sort(): ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
3. ๋ณ€์ˆ˜๋ช….reverse(): ๋ฐ˜๋Œ€๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

//cssProperty : ๋ฐ์ดํ„ฐ ๊ฐ์ฒดํ™” ์‹œํ‚ค๊ธฐ
const cssProperty = [
    { num: 1, name: "accent-color", desc: " ์š”์†Œ์˜ ๊ฐ•์กฐ ์ƒ‰์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. " },
    { num: 2, name: "align-content", desc: " ์ฝ˜ํ…์ธ  ์‚ฌ์ด์™€ ์ฝ˜ํ…์ธ  ์ฃผ์œ„ ๋นˆ ๊ณต๊ฐ„์„ ํ”Œ๋ ‰์Šค ๋ฐ•์Šค'์˜ ๊ต์ฐจ์ถ• ๋˜๋Š” ๊ทธ๋ฆฌ๋“œ์˜ ๋ธ”๋ก ์ถ•์„ ๋”ฐ๋ผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค." },
    { num: 3, name: "align-items", desc: " ๊ต์ฐจ์ถ•์—์„œ ์•„์ดํ…œ ์ •๋ ฌ ํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ flex์—์„œ item๋“ค์„ ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค." },
    { num: 4, name: "align-self", desc: " ํŠน์ • item์˜ ์ •๋ ฌ์„ ๋”ฐ๋กœ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." },
    { num: 5, name: "all", desc: " CSS ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์†์„ฑ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊นƒ๊ฐ’, ์ƒ์†๊ฐ’, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์Šคํƒ€์ผ์‹œํŠธ ์ถœ์ฒ˜์˜ ๊ฐ’๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." },
    { num: 6, name: "animation", desc: " ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ด€๋ จ๋œ ์†์„ฑ์„ ์ผ๊ด„์ ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค." },
    { num: 7, name: "animation-delay", desc: " ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค." },
    { num: 8, name: "animation-direction", desc: " ์• ๋‹ˆ๋ฉ”์ด์…˜ ์›€์ง์ž„ ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค." },
    { num: 9, name: "animation-duration", desc: " ์• ๋‹ˆ๋ฉ”์ด์…˜ ์›€์ง์ธ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค." },
    { num: 10, name: "animation-fill-mode", desc: " ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋๋‚œ ํ›„์˜ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค." },
    .
    .
    .
    { num: 382, name: "z-index", desc: " ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ฒน์ณ์ง€๋Š” ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•œ๋‹ค." }
];

//์„ ํƒ์ž
const cssList = document.querySelector(".search__list .line");

//๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ•˜๊ธฐ
const updateList = () => {
    let listCSS = "";

    cssProperty.forEach((data, index) => {
        listCSS += `
  • ${data.num}. ${data.name} : ${data.desc}
  • ` }); cssList.innerHTML = listCSS; } updateList(); //์Šคํฌ๋ฆฝ์Šค๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ˆœ์„œ ์ฃผ์˜ //๋ฐ˜๋Œ€๋กœ ์ •๋ ฌ function sortReverse(){ cssProperty.reverse(); updateList(); } //๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ function sortDescending(){ cssProperty.sort((a,b) => { return b.num - a.num; }); updateList(); } //์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ function sortAscending(){ cssProperty.sort((a,b) => { return a.num - b.num; }); updateList(); } //๋ฏธ์…˜! //์•ŒํŒŒ๋ฒณ(a-z) ์ •๋ ฌ function sortAlphabet(){ cssProperty.sort((a,b) => { return a.name.localeCompare(b.name); }); updateList(); } //์•ŒํŒŒ๋ฒณ(z-a) ์ •๋ ฌ function sortAlphabetZ(){ cssProperty.sort((a,b) => { return b.name.localeCompare(a.name); }); updateList(); } //๋ฐ˜๋Œ€๋กœ ์ •๋ ฌ ํด๋ฆญ document.querySelector(".btn1").addEventListener("click", () => { sortReverse(); }); //๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ํด๋ฆญ document.querySelector(".btn2").addEventListener("click", () => { sortDescending(); }); //์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํด๋ฆญ document.querySelector(".btn3").addEventListener("click", () => { sortAscending(); }); //์•ŒํŒŒ๋ฒณ(a-z) ์ •๋ ฌ ํด๋ฆญ document.querySelector(".btn4").addEventListener("click", () => { sortAlphabet(); }); //์•ŒํŒŒ๋ฒณ(z-a) ์ •๋ ฌ ํด๋ฆญ document.querySelector(".btn5").addEventListener("click", () => { sortAlphabetZ(); }); //๋žœ๋ค ๋ฐ˜๋ณต //ํ”ผ์…” ์˜ˆ์ด์ธ  ์•Œ๊ณ ๋ฆฌ์ฆ˜ //1 document.querySelector(".btn6").addEventListener("click", (e) => { e.preventDefault(); for( let i=cssProperty.length-1; i>=0; i--){ const radomIndex = Math.floor(Math.random() * (i + 1)); // console.log(radomIndex) // ์œ„๊นŒ์ง€ ํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋ฉด ์ค‘๋ณต ์ˆซ์ž๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋•Œ๋ฌธ์— // ๊ฐ์ฒด๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•œ๋‹ค. = [1,2,3] = [3,2,1] : ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. [cssProperty[i], cssProperty[radomIndex]] = [cssProperty[radomIndex], cssProperty[i]]; // ์ค‘๋ณต ์ œ๊ฑฐ... ๋ชจ๋ฅด๋ฉด ๊ฑ ์™ธ์›Œ... cssProperty.innerHTML += cssProperty[i]; } updateList(); });

    #3. ๊ฒฐ๊ณผ

    728x90

    ๋Œ“๊ธ€


    Lucky Charms Rainbow
    js
    html
    css