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().
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}
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.
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; }
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!