메뉴 건너뛰기

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

다량의 배열 요소를 다룰때 중복데이터에 대한 처리는 생각보다 만만치가 않다.

이러한 중복값 처리에 필요한 요구가 다양하게 있겠지만, 가장 흔히 요구되는 기능 몇가지를 작성 하였다.


<script type="text/javascript">

    // 테스트용 배열 선언

    var arr1 = new Array();

    var arr2 = new Array();

    var arr3 = new Array();


    // 배열요소의 중복제거 및 오름차순 정렬(속성형)

    Array.prototype.unique = function() {

        var a = {};

        for (var i = 0; i < this.length; i++) {

            if (typeof a[this[i]] == 'undefined') {

                a[this[i]] = 1;

            }

        }

        this.length = 0;

        for (var i in a) {

            this[this.length] = i;

        }

        return this;

    };

    arr1 = [3,3,4,4,5,6,6,7,7,7,8,9,9,9,2,1,1,0]; //무작위값 할당

    alert(arr1.unique()); //결과: 0,1,2,3,4,5,6,7,8,9



    // 배열요소의 중복제거 및 오름차순 정렬(함수형)

    function uniqueArray(arr) {

        var a = {};

        for (var i = 0; i < arr.length; i++) {

            if (typeof a[arr[i]] == 'undefined') {

                a[arr[i]] = 1;

            }

        }

        arr.length = 0;

        for (var i in a) {

            arr[arr.length] = i;

        }

        return arr;

    }

    alert(uniqueArray([1,4,2,2,3,4,5,5,5,7,6,6,9,0,8,8]))//결과: 0,1,2,3,4,5,6,7,8,9



    // 배열요소의 중복만 제거해서 배열로 반환

    function uniqArr(arr) {

        var chk = [];

        for (var i = 0; i < arr.length; i++) {

            if (chk.length == 0) {

                chk.push(arr[i]);

            } else {

                var flg = true;

                for (var j = 0; j < chk.length; j++) {

                    if (chk[j] == arr[i]) {

                        flg = false;

                        break;

                    }

                }

                if (flg) {

                    chk.push(arr[i]);

                }

            }

        }

        return chk;

    }

    alert(uniqArr([9,8,8,1,1,2,2,3,4,5,5,6,7,0])); //결과: 9,8,1,2,3,4,5,6,7,0



    // 2개 이상의 배열요소에서 중복이 아닌값만 배열로 반환 array_diff(arr1, arr2, ...)

    function array_diff() {

        var args = array_diff.arguments;

        var T = args[0], arg, k, R = '', out = [];

        var d = array_diff.delim;

        for (k = 1; arg = args[k++];)

            R += arg.join(d) + d;

        for (k = 0; k < T.length; k++)

            if (R.indexOf(T[k] + d) < 0)

                out[out.length] = T[k];

        return out;

    }

    array_diff.delim = '*'; //임시 구분자 지정

    arr1 = [0,1,2,3,4,5,6,7,8,9];

    arr2 = [2,3,5];

    arr3 = [3,8,9];

    alert(array_diff(arr1, arr2, arr3)); //결과: 0,1,4,6,7



    // 응용: 새 배열을 랜덤 정렬로 생성하고 원래 배열에 연결후 중복제거
    {
        arr1 = [1,4,2,0,3,1,2,0,0,1,7,5];
        arr2 = [];

        for (var i = 0; i < 12; i++) {
            arr2[i] = i + 1;
        }
        arr2.sort(function() { return Math.random() - Math.random(); }); //랜덤정렬
        arr1 = arr1.concat(arr2); //배열 연결

        arr1 = arr1.unique(); //중복제거 및 오름차순 정렬
        alert(arr1); //결과확인
    }
</script>

List of Articles
번호 제목 날짜 조회 수
227 Alert, Confirm을 모달 팝업으로 만들기 file 2021.03.09 3891
226 arguments object 2016.09.21 5652
225 check box 선택시 색상 변경 file 2014.03.01 6494
224 Checkbox : 체크박스 체크여부 확인 file 2015.06.19 19010
223 CheckBox 전체 선택 & 해제 2015.04.28 5580
222 checkbox 한개 클릭으로 다른모든 checkbox 클릭되게 하기 2014.03.01 5709
221 check_inputbox.js 2014.03.01 5407
220 cross site scripting을 막기위한...javascript 2018.07.24 1596
219 Date 객체로 원하는 날짜, 시간 표현하기 2021.08.20 223
218 default 매개변수(매개변수 기본값) 2021.03.26 199
217 div 높이 가운데정렬 2014.03.01 5593
216 div태그를 이용한 클릭시 레이어 띄우기 2019.01.16 1329
215 DTREE 트리구조 만들기 file 2021.03.26 868
214 fckeditor 2.6.6 엄청 편해졌네 file 2014.03.01 5403
213 form 값 iframe 으로 넘기기 2014.03.01 6872
212 getYear(); 크롬, 파이어폭스 에서 제대로 작동 안하는 문제 2021.03.26 197
211 GET방식으로 전송시 특수문자함께 전송하는 방법 2016.12.22 12346
210 htaccess 자동으로 만들어주는 사이트 2016.09.11 5423
209 HTML 화면을 PDF로 출력 file 2019.01.08 5218
208 HTML, Javscript - 선택한 색상으로 배경색 바꾸기(pallet 만들기) file 2021.03.09 717
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved