Heim  >  Artikel  >  Web-Frontend  >  Verwenden Sie Slice, um Array-Methoden in JS zu kapseln

Verwenden Sie Slice, um Array-Methoden in JS zu kapseln

不言
不言Original
2018-07-20 09:34:221863Durchsuche

Dieser Artikel stellt Ihnen die Verwendung von Slice zur Kapselung von Array-Methoden in JS vor. Er hat einen gewissen Referenzwert.

Funktion der Slice-Methode
// 1) : Array-Interception
// 2) :slice(m,n): Beginnend mit Array-Index m, Intercept bis Index n, aber nicht inklusive n ;[Davor und nicht danach einschließen]
//slice(m): Beginnend mit Index m, bis zum Ende abfangen;
//slice(): Slice(0) des Arrays klonen;
/ // Negativer Index: Sei die aktuelle Länge + negative Zahl;
// 3): Der Rückgabewert ist das abgefangene Array
// 4): Das ursprüngliche Array ändert sich nicht;
* Zunächst einmal: Klären Sie zunächst die verschiedenen Situationen von Slice und die Idee von Slice
* Die übergebenen Parameter können andere Datentypen sein, sofern sie in gültige Zahlen umgewandelt werden können (so die Parametertypanforderungen sind flexibler)
* Zweitens ist zu beachten, dass nur der erste und der zweite Parameter gültige Parameter sind, der dritte und die folgenden Parameter haben keinen Einfluss auf das abgefangene Ergebnis


Verarbeitung von Parametern:
* Geben wir den ersten Parameter an den Variablenanfang und den zweiten Parameter an das Variablenende
* 1. Wenn Parameter 1 und Parameter 2 beide undefiniert sind oder einer von ihnen undefiniert ist undefinierter Fall
* Fall 1: Wenn Parameter 1 undefiniert ist, nehmen Sie direkt start=0
* Fall 2: Wenn Parameter 2 undefiniert ist, nehmen Sie direkt end=this.length


2. Wenn weder Parameter 1 noch Parameter 2 undefiniert sind
* Fall 1: Wenn der erste Parameter eine negative Zahl ist: Start nimmt den Maximalwert von this.length und den Parametern an, wenn der erste Parameter größer ist kleiner oder gleich 0, start nimmt sich direkt selbst
* Fall 2: Wenn der zweite Parameter eine negative Zahl ist, nimmt end die Summe aus this.length und end, wenn der Parameter größer als 0 ist, nimmt end this.length an Mit dem Mindestwert am Ende


Verarbeitung der Intervalllänge: Set size=end-start
* Fall 1: Wenn die Intervalllänge kleiner oder gleich 0 ist, leer zurückgeben direkt Array
* Fall 2: Wenn die Intervalllänge größer als 0 ist, unabhängig davon, ob es sich um eine Zeichenfolge oder ein Array handelt, erstellen Sie ein Array mit einer Länge von size, weisen Sie dem neuen Array von Anfang bis Ende Werte zu und das neue Array zurückgeben

@type {Array}
*/
Angehängter Code:

    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;
    };

Verwandte Empfehlungen:

JS-Code zur Implementierung der Datumsauswahl

Für js Weiteres Verständnis von Schließungen

Das obige ist der detaillierte Inhalt vonVerwenden Sie Slice, um Array-Methoden in JS zu kapseln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn