Heim  >  Artikel  >  Web-Frontend  >  Einführung in js-Arrays

Einführung in js-Arrays

不言
不言Original
2018-07-20 15:49:301361Durchsuche

Was ist ein js-Array (ArrayLike)? Das js-Klassenarray verfügt über das Längenattribut und andere Attribute (Indizes) sind nicht negative Ganzzahlen (der Index im Objekt wird als Zeichenfolge behandelt, hier können Sie ihn als nicht negative Ganzzahlzeichenfolge verstehen). Habe die Methoden des Arrays.

Beispiel:

//类数组示例
var a = {'1':'gg','2':'love','4':'meimei',length:5};
Array.prototype.join.call(a,'+');//'+gg+love++meimei'//非类数组示例
var c = {'1':2};   //没有length属性就不是类数组

Gemeinsame Klassenarrays in JavaScript umfassen Argumentobjekte und die Rückgabeergebnisse von DOM-Methoden.
Zum Beispiel document.getElementsByTagName().

Bestimmen Sie, ob ein Objekt ein Array-ähnliches Objekt ist

function isArrayLike(o) {    
if (o &&                                // o is not null, undefined, etc.
        typeof o === 'object' &&            // o is an object
        isFinite(o.length) &&               // o.length is a finite number
        o.length >= 0 &&                    // o.length is non-negative
        o.length===Math.floor(o.length) &&  // o.length is an integer
        o.length < 4294967296)              // o.length < 2^32
        return true;                        // Then o is array-like
    else
        return false;                       // Otherwise it is not}

2. Welche Vorteile hat der Betrieb nach der Konvertierung eines js-ähnlichen Arrays in ein Array?

Da ein Klassenarray nicht über die Eigenschaften eines Arrays verfügt, können Sie nach dem Konvertieren eines Klassenarrays in ein Array leistungsstarke Methoden wie Shift, Unshift, Splice, Slice, Concat, Reverse, Sort usw. aufrufen. , was bequem und schnell ist.

3. JS-Klassen-Array-zu-Array-Methode

Array.prototype.slice.call(arrayLike)
//将arguments转化为数组后,截取第一个元素之后的所有元素
  var args = Array.prototype.slice.call(arguments,1);

Das Ergebnis von Array.prototype.slice.call(arrayLike) besteht zunächst darin, das arrayLike-Objekt in ein Array-Objekt zu konvertieren. Daher können Sie die Methoden des Arrays anschließend direkt aufrufen, z. B.

Array.prototype.slice.call(arrayLike).forEach(function(element,index){  //可以随意操作每一个element了 })

(1) Array.prototype.slice repräsentiert die Slice-Methode im Prototyp des Arrays. Beachten Sie, dass diese Slice-Methode ein Objekt vom Typ Array zurückgibt.

//slice的内部实现Array.prototype.slice = function(start,end){  
      var result = new Array();  
      start = start || 0;  
      end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键  
      for(var i = start; i < end; i++){  
           result.push(this[i]);  
      }  
      return result;  
 }

(2) Die einzige Methode, die call aufrufen kann, ist, dass Sie [].call nicht verwenden können, sondern [].slice verwenden müssen. Der erste Parameter von call gibt an, dass die Umgebung, in der Slice tatsächlich aufgerufen wird, zum arrayLike-Objekt wird. Es ist also so, als hätte arrayLike auch Array-Methoden.

(3) Im Anhang finden Sie eine allgemeine Funktion zum Konvertieren eines js-Arrays in ein Array

var toArray = function(s){  
    try{  
        return Array.prototype.slice.call(s);  
    } catch(e){  
            var arr = [];  
            for(var i = 0,len = s.length; i < len; i++){  
                //arr.push(s[i]);  
                 arr[i] = s[i];     //据说这样比push快            }  
             return arr;  
    }

4. Konvertieren Sie ein Array in eine Parameterliste (array-ähnlich)

Aufruf „apply“. Bei Verwendung der Methode ist der erste Parameter das Objekt (this) und der zweite Parameter eine Array-Sammlung. Hier ist eine clevere Verwendung von apply, die ein Array standardmäßig in eine Parameterliste konvertieren kann ([param1, param2, param3). ] in param1, param2, param3). Wenn wir ein Programm verwenden, um jedes Element des Arrays in eine Liste von Parametern umzuwandeln, kann es eine Weile dauern angenommen.

Verwandte Empfehlungen:

Übersicht über js-Basisarrays Array-Länge Array-Traversal

Das obige ist der detaillierte Inhalt vonEinführung in js-Arrays. 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