6 개의 자바 script 배열 의 실 용적 인 원형 확장 방법

20902 단어 JavaScript
배열 은 모든 프로 그래 밍 언어 에서 매우 중요 한 도구 라 고 할 수 있 습 니 다. 자 바스 크 립 트 에서 도 마찬가지 입 니 다. 그러나 안 타 깝 게 도 원생 자 바스 크 립 트 에서 배열 에 제공 하 는 방법 이 적 고 적 습 니 다. 이 는 어느 정도 개발 효율 을 떨 어 뜨 렸 습 니 다. 만약 당신 도 이 로 인해 어려움 을 겪 었 다 면 아래 의 코드 는 이러한 난처 한 국면 을 완화 하 는 데 도움 이 될 수 있 습 니 다.
배열 에 대한 원형 확장 을 시작 하기 전에 하나의 변수 가 배열 형식 인지 검증 하 는 방법 을 추가 할 필요 가 있 습 니 다.이 방법 은 임의의 데이터 형식의 변 수 를 매개 변수 로 받 아들 이 고 배열 이 라면 true 로 돌아 갑 니 다. 그렇지 않 으 면 알 고 있 습 니 다.
function isArray(a){

	return a.constructor === Array ? true : false;

}



// Usage :

var isArrayA = [3];

var isArrayB = 3;

var isArrayResultA = isArray(isArrayA); //true

var isArrayResultB = isArray(isArrayB); //false


딥 카피
이 방법 은 매우 간단 하 다. 그것 은 깊이 있 게 복사 한 배열 을 되 돌려 준다.만약 당신 이 이것 에 대해 현혹 되 었 다 면, 여기, 이곳 을 클릭 하여 상세 한 설명 을 얻 으 세 요.
Array.prototype.copy = function(){

    return [].concat(this);

};



// Usage :

var copyA = [0,1];

var copyResult = copyA.copy();


배열 의 중복 항목 제거
방법 유 니 크 는 중복 되 지 않 는 요소 만 포함 하 는 배열 을 되 돌려 줍 니 다.
Array.prototype.unique = function(){

    var a = [];

    var l = this.length;

    for (var i = 0; i < l; i++) {

        for (var j = i + 1; j < l; j++) {

            if (this[i] === this[j]) 

                j = ++i;

        }

        a.push(this[i]);

    }

    return a;

};



// Usage :

var uniqueA = [1,2,3,3,5,5,3,7];

var uniqueResult = uniqueA.unique();

// uniqueResult = [1, 2, 5, 3, 7];


배열 의 다른 요 소 를 가 져 옵 니 다.
하나의 배열 이 diff 방법 을 호출 하면 이 배열 의 요소 가 다른 배열 의 요소 와 다른 요 소 를 얻 을 수 있 습 니 다.좀 꼬 였 죠?해 보면 어떻게 된 건 지 알 수 있 을 거 야.
Array.prototype.diff = function(){

    var a1 = this;

    var a = a2 = null;

    var n = 0;

    while (n < arguments.length) {

        a = [];

        a2 = arguments[n];

        var l = a1.length;

        var l2 = a2.length;

        var diff = true;

        for (var i = 0; i < l; i++) {

            for (var j = 0; j < l2; j++) {

                if (a1[i] === a2[j]) {

                    diff = false;

                    break;

                }

            }

            diff ? a.push(a1[i]) : diff = true;

        }

        a1 = a;

        n++;

    }

    return a.unique();

};



// Usage :

var diffA = [1,2,3];

var diffB = [2,3,4];

var diffResult = diffA.diff(diffB);

// diff = [1];


병합 배열
이 방법 은 들 어 오 는 배열 을 합 쳐 합 친 새 배열 로 되 돌려 줍 니 다.
Array.prototype.union = function(){

    var a = [].concat(this);

    var l = arguments.length;

    for (var i = 0; i < l; i++) {

        a = a.concat(arguments[i]);

    }

    return a;

};



// Usage :

var unionA = [1,2,3];

var unionB = [2,3,4];

var unionResult = unionA.union(unionB);

// unionResult = [1, 2, 3, 2, 3, 4]


교차 하 다
intersect 는 몇 개의 배열 에 들 어 오 는 똑 같은 요 소 를 되 돌려 줍 니 다.
Array.prototype.intersect = function(){

    if (!arguments.length) 

        return [];

    var a1 = this;

    var a = a2 = null;

    var n = 0;

    while (n < arguments.length) {

        a = [];

        a2 = arguments[n];

        var l = a1.length;

        var l2 = a2.length;

        for (var i = 0; i < l; i++) {

            for (var j = 0; j < l2; j++) {

                if (a1[i] === a2[j]) 

                    a.push(a1[i]);

            }

        }

        a1 = a;

        n++;

    }

    return a.unique();

};



// Usage :

var intersectA = [1,2,3];

var intersectB = [2,3,4];

var intersectC = [3,4,5];

var intersectResult = intersectA.intersect(intersectB,intersectC);

// intersectResult = [3];


에 세이 화
한 배열 을 무 작위 로 정렬 하고 반환 값 은 undefined 입 니 다.
Array.prototype.randomize = function(){

        this.sort(function(){

            return ((Math.random() * 3) | 0) - 1;

        });

};



// Usage :

var randomizeA = [4,7,3,7,3];

randomizeA.randomize();


아래 의 링크 는 본문의 모든 코드 와 용례 를 포함 하고 있다.다운로드 환영
코드 및 데모

좋은 웹페이지 즐겨찾기