일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- insertAdjacentHTML
- html
- NodeList
- classList
- swiperjs
- Sticky
- JavaScript
- mousemove
- css
- NAV
- For
- 반복문
- React
- 스크롤
- localstorage
- scrollY
- input
- scroll
- width
- Hover
- pointermove
- addEventListener
- swiper
- getBoundingClientRect
- scrollevent
- 확장성
- 이벤트리스너
- Animation
- 애니메이션
- forEach
- Today
- Total
ZeroToHunnit Coding
[Javascript] 글자순 필터 기능 본문
이렇게 마구잡이로 정렬되어있던 글들을 가나다순, 역순으로 정렬해주는 필터를 만들어보았다.
HTML
짜잔 아무 것도 없다.
CSS
css도 뭐 별거없다.
JAVASCRIPT
HTML과 모든 기능들은 js에 숨겨두었다.
우선 가상의 서버데이터라고 생각하고 array를 list에 담아두었다.
그리고 forEach반복문을 통해 ul안에 li를 템플릿으로 만들어 insertAdjacentHTML이라는 것으로 요소를 집어넣어주었다. beforeend의 의미는 새로운 요소는 마지막으로 두어라~ 라는 뜻이다.
그리고 각 버튼을 클릭하면 정렬되게 이벤트리스너를 부여했다.
가나다순 버튼은 .sort()라는 함수로 간단하게 정렬했다. sort는 글자 순서대로 array를 정리해주는 함수이다.
역순 버튼 또한 .sort()라는 함수를 썼는데, 콜백함수를 넣어서 조건문을 넣어주었다. 파라미터에 a,b의 의미는 array자료 안에 선택된 두가지 요소들이다. 그래서 a와 b를 비교해서 a가 더 크면 return -1로 해두었는데, 이 의미는 return값이 음수이면 a의 값을 왼쪽으로 보내준다. 즉 array 자료 안에 있는 데이터들을 각각 다 비교해 제일 큰(한글에서는 자음 'ㅎ') 자료를 오른쪽으로 보내서 제일 앞에 배치되게 된다. 이러면 역순 끝~
이벤트리스너 안에 굳이 copy본을 만들어서 copy본을 정렬하는 것을 볼 수 있는데 이 이유는 원래의 자료를 훼손시키게 되면 나중에 원상태의 array자료를 불러올 때 어려움이 있을 수 있기 때문에 복사본으로 다루는 것이 안전하다. 습관적으로 하면 좋은 관습일 것이다.
'JAVASCRIPT' 카테고리의 다른 글
[Javascript] 스크롤에 따라 채워지는 bar (2) | 2024.02.14 |
---|---|
[Javascript] 마우스 움직임에 따라 여러 div 3d로 기울이기 (0) | 2024.02.13 |
[Javascript] 가로 스크롤 시 해당 섹션의 제목 고정 (2) | 2024.02.07 |
[Javascript] 마우스 따라 움직이는 ui (0) | 2024.02.05 |
[Javascript] 아코디언 메뉴 만들기 (0) | 2024.02.03 |