>  기사  >  웹 프론트엔드  >  JS에서 슬라이스를 사용하여 배열 메서드 캡슐화

JS에서 슬라이스를 사용하여 배열 메서드 캡슐화

不言
不言원래의
2018-07-20 09:34:221822검색

이 기사에서는 JS에서 배열 메서드를 캡슐화하기 위해 슬라이스를 사용하는 방법을 소개합니다. 필요한 경우 친구가 참조할 수 있습니다.

슬라이스 방법의 기능
// 1) : 배열 가로채기
// 2) :slice(m,n): 배열 인덱스 m에서 시작하여 인덱스 n을 가로채지만 n을 포함하지 않습니다. 마지막 ]
// 슬라이스(m): 인덱스 m에서 시작하여 끝까지 가로채기
// 슬라이스(): 배열의 슬라이스(0) 복제
// // 음수 인덱스: 현재 길이를 + 음수;
// 3 ) : 반환 값은 가로채는 배열입니다.
// 4) : 원래 배열은 변경되지 않습니다.
/**
* 우선: 먼저 여러 가지 슬라이스 상황과 슬라이스 아이디어를 구별합니다.
* 전달된 매개변수는 유효한 숫자로 변환될 수 있는 한 다른 유형의 데이터일 수 있습니다(따라서 매개변수 유형 요구사항이 더 유연함) )
* 둘째, 첫 번째와 두 번째 매개변수만 유효한 매개변수라는 점에 유의해야 합니다. 세 번째 이후의 매개변수는 차단된 결과에 영향을 미치지 않습니다.

매개변수 처리:
* 첫 번째 매개변수를 임시로 넣습니다. 변수 start에 매개변수가 주어지고 변수 end에 두 번째 매개변수가 주어진다
* 1. 매개변수 1과 매개변수 2가 모두 정의되지 않았거나 둘 중 하나가 정의되지 않은 경우
* 사례 1: 매개변수 1이 정의되지 않은 경우 직접 가져옴 start=0
* 사례 2: 매개변수 2가 정의되지 않은 경우 직접 end=this.length

2. 매개변수 1과 매개변수 2 모두 정의되지 않은 경우
* 사례 1: 첫 번째 매개변수가 음수인 경우 이하 : start는 this.length와 매개변수의 최대값을 취합니다. 첫 번째 매개변수가 0보다 크거나 같으면 start는 직접 취합니다.
* 사례 2: 두 번째 매개변수가 음수이면 end는 이것을 합산합니다. 길이와 끝의 매개변수가 0보다 큰 경우 끝은 this.length와 end

간격 길이 처리: 크기 설정=end-start
* 사례 1: 간격 길이가 더 작은 경우 0보다 크거나 같은 경우에는 빈 배열이 직접 반환됩니다.
* 사례 2: 간격 길이가 0보다 큰 경우 문자열이든 배열이든 관계없이 크기의 길이로 배열을 생성하고 할당합니다. 값을 처음부터 끝까지 새 배열에 할당하고 새 배열을 할당합니다. Array return
@type {Array}
*/
첨부 코드:

    Array.prototype.mySlice = function (start,end) {
        var newAry = [];//创建一个变量用来接收返回值
        var len = this.length;//变量接收当前数组的长度
        //先对参数为undefined的情况进行处理
        start = (start !== undefined)?start:0;
        end = (end !== undefined)?end:len;
        //对于参数的处理,采用三目运算符,由于在与0判断的时候自动转换为数字再进行判断,所以直接与0比较即可
        start = (start>=0)?start:Math.max(0,len+start);
        end = (end>=0)?Math.min(end,len):len+end;
        var size = end - start;//用一个变量接收截取区间的长度
        if(size>0){
            //当区间长度大于0时,实例化一个长度为size的数组,并赋值给newAry
            newAry = new Array(size);
            //遍历数组,将当前数组[start,end)区间上的值依次赋值给newAry
            for(var i = 0;i<size;i++){
                newAry[i] = this[i+start];
            }
        }else{
            //当区间长度小于等于0的情况下,直接返回空数组
            return newAry;
        }
        return newAry;
    };

관련 권장 사항:

js 날짜 선택기 코드 구현

js 클로저에 대한 추가 이해

위 내용은 JS에서 슬라이스를 사용하여 배열 메서드 캡슐화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.