메뉴 건너뛰기

조회 수 2373 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

어떤 훌륭한 분이 한글을 분리해주는 라이브러리를 맨들어줘서 그분의 라이브러리를 활용한 초성 검색 예제를 만들어 보았다.


라이브러리 : https://github.com/e-/Hangul.js/




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript" src="./hangul.min.js"></script>
</head>
<body>
    검색어 : <input type="text" id="txt" />
    <ul id="find"></ul>
 
    <script>
        // 검색할 배열
        var arr = [
            { name: "홍길동" },
            { name: "한국" },
            { name: "호가든" },
            { name: "프로그램목록" },
            { name: "프로세스" },
            { name: "공통" },
            { name: "아키텍쳐" },
            { name: "앙칼지다" },
            { name: "학사행정" },
            { name: "일반부속" },
            { name: "학습 및 취업" },
            { name: "테이블정의서" },
            { name: "테이저건" },
            { name: "정의서" },
            { name: "현행화" },
            { name: "졸업" },
            { name: "바인더" },
            { name: "대학본부" },
            { name: "에디터" },
            { name: "Visual Studio Code" },
            { name: "Edit Plus" },
            { name: "소나무" },
            { name: "민들레" },
            { name: "나뭇가지" },
            { name: "갑천" },
            { name: "한강" },
            { name: "금강" },
            { name: "도안동" },
            { name: "월평동" },
            { name: "대전광역시" },
            { name: "서울" },
            { name: "경기도" },
            { name: "성남시" },
            { name: "모니터" },
            { name: "이클립스" },
            { name: "탐색기" },
            { name: "엑셀" },
            { name: "크롬" },
            { name: "파이어폭스" },
            { name: "텔레그램" },
            { name: "팟플레이어" },
            { name: "마이크로소프트" },
            { name: "애플" },
            { name: "LG" },
            { name: "삼성" },
            { name: "오라클" },
            { name: "MySQL" },
            { name: "치약" },
            { name: "프린터" },
            { name: "레이저 프린터" },
            { name: "아반떼" },
            { name: "베라크루즈" },
            { name: "자동차공학과" },
            { name: "기아자동차" },
            { name: "현대자동차" },
            { name: "에어컨" }
        ];
 
        // object 에 초성필드 추가 {name:"홍길동", diassembled:"ㅎㄱㄷ"}
        arr.forEach(function (item) {
            var dis = Hangul.disassemble(item.name, true);
            var cho = dis.reduce(function (prev, elem) {
                elem = elem[0] ? elem[0] : elem;
                return prev + elem;
            }, "");
            item.diassembled = cho;
        });
 
        console.log(arr);
 
 
        var ul = document.getElementById('find');
        document.getElementById('txt').addEventListener('keyup', function () {
            while (ul.firstChild) {
                ul.removeChild(ul.firstChild);
            }
 
            var search = this.value;
            var search1 = Hangul.disassemble(search).join("");  // ㄺ=>ㄹㄱ
 
 
            arr
            // 문자열 검색 || 초성검색
            .filter(function (item) {
                return item.name.includes(search) || item.diassembled.includes(search1);
            })
            // 검색결과 ul 아래에 li 로 추가
            .forEach(function (item) {
                var li = document.createElement('li');
                li.innerHTML = item.name;
 
                ul.appendChild(li);
            });
        });
    </script>
</body>
</html>


List of Articles
번호 제목 날짜 조회 수
247 유효한 링크인지 확인하는 JAVASCRIPT 2019.01.16 111956
246 [jQuery] 상위부터 차례로 지역 선택하기 2014.03.01 45969
245 Javascript - 이미지 미리보기 회전되어 나옴(EXIF) file 2021.03.09 36295
244 javascript 인쇄 미리보기, 출력, 페이지 설정 등 2014.03.01 32412
243 Checkbox : 체크박스 체크여부 확인 file 2015.06.19 19010
242 날짜 및 시간 입력 구현하기, Bootstrap DateTimePicker file 2017.04.06 16532
241 공백 검사 함수 2015.06.19 14586
240 선택(CheckBox) 된 Row 삭제 - 화면에서 추가된 Row 2015.04.28 13538
239 'focus', 엔터 누르고 이동하자! file 2015.02.03 12857
238 라디오버튼 선택 체크여부 radio checked 2014.03.01 12669
237 셀렉트(select) change Ajax 이벤트 2016.12.23 12578
236 input type file multiple list (파일 업로드 리스트 확인) file 2016.11.17 12434
235 간단한 동적 SELECT 박스 구현하기 2016.10.06 12367
234 GET방식으로 전송시 특수문자함께 전송하는 방법 2016.12.22 12338
233 텍스트박스(input type = "text") 숫자 증가, 감소 시키기 - 쇼핑몰 주문 수량 file 2015.06.19 12281
232 창 크기 최대화 시키기 file 2015.06.19 12222
231 [jQuery] 실시간 검색어 순위 순서대로 보여주기 2014.03.01 12017
230 jquery 메뉴 - 아래로 한번에 전체가 펼처짐 file 2015.04.06 11698
229 'Array', 배열 및 다차원 배열 선언에 대해 알아보자! 2015.02.03 11110
228 랜덤 배너 노출 스크립트 2019.04.29 11039
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved