메뉴 건너뛰기

조회 수 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
번호 제목 날짜 조회 수
187 이클립스 실행할때 자신이 원하는 JDK 지정하는 방법 file 2016.09.11 5439
186 이전, 위로 이동 2016.12.23 5740
185 이벤트 - 페이지 로드 후 이벤트 처리하기 ( window.onload ) file 2015.06.19 10871
184 이미지클릭시 옆에 큰이미지나오기 2014.03.17 5518
183 이미지에 마우스 올렸을때 확대 이미지 나오게 하기 (onmouseover 2014.03.01 6923
182 이미지나 태그정렬이 안맞을때 absmiddle 2014.03.01 5238
181 이미지 마우스 드래그로 스크롤을 움직이는 소스 2014.03.17 9362
180 이메일 체크하기 2014.03.01 5205
179 이동 가능한 레이어팝업 소스 2016.09.01 7166
178 유효한 링크인지 확인하는 JAVASCRIPT 2019.01.16 112025
177 유효성 검사, 모든 폼에 값이 입력되도록 해보자! file 2015.02.03 6125
176 유용한 스크립트 모음 2018.07.24 2294
175 월의 마지막 날짜 계산하기 2021.08.20 242
174 우클릭 금지 2016.12.23 5701
173 오브젝트 속성 2021.03.25 237
172 오늘 날짜 구하기 2018.11.07 1416
171 예제 - 자바스크립트로 현재 달의 달력 만들기 (calendar) 2015.06.19 10063
170 예제 - 이미지를 원본 크기로 볼 수 있도록 새창으로 열기 확장 (리사이징 및 이미지 드래그) file 2015.06.19 6798
169 영문, 숫자, 한글, 이메일 체크 하는 함수 2014.03.01 5292
168 연관배열 사용하기 2016.09.21 7134
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved