Heim > Web-Frontend > js-Tutorial > Erweiterung und Reparatur von Arrays von Lesenotizen im Javascript-Framework-Design_Javascript-Fähigkeiten

Erweiterung und Reparatur von Arrays von Lesenotizen im Javascript-Framework-Design_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 16:29:37
Original
1229 Leute haben es durchsucht

1.indexOf- und lastIndexOf-Methoden:

Da IE7 einen Fehler meldet, wenn indexOf für ein Array-Objekt verwendet wird, muss es aus Kompatibilitätsgründen neu geschrieben werden.

Code kopieren Der Code lautet wie folgt:

Array.prototype.lastIndexOf(item,index){
var n = this.length,i = (index==null||index>n-1)?n-1:index;
​if(i < 0) i = n i;
​for(;i>=0;i--)
​​if(this[i] === item) //Kongruentes Urteil, indexOf, lastIndexOf
   return i;
return -1;
}

2. Shuffle-Methode: Mischen Sie das Array.

Code kopieren Der Code lautet wie folgt:

Funktion shuffle(target){
var i = target.length, j ,temp;
for(;i>0;j=parseInt(Math.random() * i), x = target[--i],target[i] = target[j],target[j]=x){} 
//Angenommen, Länge = 10, dann Math.random()*10->[0,10), nach parseInt, [0,9], zufällig eines auswählen, um es mit dem letzten Element des Arrays auszutauschen. Beim zweiten Durchlauf der Schleife wird [0,8] mit dem vorletzten Element des Arrays vertauscht.
Ziel zurückgeben;
}

3. Abflachen von Arrays: Abflachen, Rückgabe eines eindimensionalen Arrays

Code kopieren Der Code lautet wie folgt:

Funktion flatten(arr){
var result = [];
arr.forEach(function(item){
  if(Array.isArray(item)) result.concat(flatten(item));
   else  result.push(item);
});
Ergebnis zurückgeben;
}

4.Einzigartige Methode: Deduplizierungsvorgang für Array

Interviewer fragen am häufigsten nach dieser Methode, da es viele Implementierungsmethoden gibt, die häufigste sind zwei for-Schleifen. Am bekanntesten ist die Verwendung eines Objekts a und dann eines for-Schleifenarrays arr. Jedes Mal, wenn (a[arr[i]]) existiert, wird es in Ihr neu definiertes Array-Ergebnis verschoben, wenn es nicht existiert . Die Existenz wird bewiesen und wiederholt, es besteht also keine Notwendigkeit, sie auf das Ergebnis zu drängen. In diesem Schema werden „123“ und 123 als gleich betrachtet. Tatsächlich ist das eine eine Zeichenfolge und das andere eine Zahl, daher sollten sie nicht als gleich betrachtet werden.

Die folgende Methode erscheint also: [1, „1“, „1“]

Code kopieren Der Code lautet wie folgt:

if ((typeof obj[array[i]]) != (typeof array[i]) || obj[array[i]] != array[i]) {
a.push(array[i]);
obj[array[i]] = array[i];
}

//Bestimmen Sie zunächst, ob die Typen gleich sind. Wenn sie gleich sind, speichern Sie sie. Wenn sie gleich sind, beweist dies, dass der Wert bereits vorhanden ist vor.

Wenn die Typen nicht identisch sind, gibt es zwei Situationen,

Im ersten Fall hat obj diese Daten bereits gespeichert, zum Beispiel: obj[123] = 123, jetzt array[i] = „123“, zu diesem Zeitpunkt ist der Typ von obj[array[i]]). eine Zahl und typeof array[i] ist eine Zeichenfolge, daher wird sie im Array gespeichert.

Die zweite Situation ist, dass obj diese Daten nicht gespeichert hat, zum Beispiel: array[i] = „123“, obj[“123“] = undefind, dann ist typeof obj[array[i]]) typeof undefined = undefiniert, ungleich typeof array[i], wird im Array gespeichert.

Diese Methode kann den Fall lösen, in dem Zeichenfolgen und Zahlen gleich sind, sie kann jedoch nicht den Fall lösen, in dem die Objekte gleich sind. Zum Beispiel: a = {1:2}, b ={2:1};

Beim ersten Durchlauf der Schleife ist typeof obj[a] = undefiniert, typeof a = Object. Speichern Sie obj[a] = a. Tatsächlich ist es obj[Object] = a;

In der zweiten Schleife ist typeof obj[b] gleich typeof obj[Object], was eigentlich typeof a = object, typeof b = object ist. Daher wird obj[array[i]] != array[ eingegeben. i]|, Das ist obj[b]->obj[Object]->a! = b, also Anzahlung

obj[b] = b; das heißt, obj[Object] = b; deckt das vorherige obj[Object] = a;

ab

In diesem Fall wird für alle Objekte nur der letzte Objektwert gespeichert.

Wenn ich über Objekte nachdenke, verwende ich etwa Folgendes:

Code kopieren Der Code lautet wie folgt:

for(var i = 0; i < temp.length; i ){
for(var j = i 1; j < temp.length; j ){
If(temp[i] === temp[j]){
temp.splice(j, 1);
j--;
                                                                                                   }                 }
}
Rücklauftemperatur;

5. Array-Sortierung: Sortiermethode. Wenn Sie Objekte sortieren möchten, können Sie Ihre eigene Compare(a,b){if(a.age>b.age) return 1;else return -1;} schreiben, Ein .sort(compare).

6.min gibt den Mindestwert des Arrays zurück: return Math.min.apply(0,array);

7.unshift gibt die Array-Länge unter IE6 und 7 nicht zurück.

Code kopieren Der Code lautet wie folgt:
if([].unshift(1)!==1) //Ein Element von vorne zum leeren Array hinzufügen. Andere Browser geben 1 zurück, aber IE6 und 7 geben die Array-Länge nicht zurück. Führen Sie dann die if-Anweisung
aus {
var _unshift = Array.prototype.unshift; //Funktionsentführung.
​Array.prototype.unshift = function(){
​​_unshift.apply(this,arguments);
Gibt this.length;
zurück }
}

8. Wenn splice einen Parameter annimmt, ist der zweite Parameter in IE8 und niedrigeren Versionen standardmäßig auf 0, während andere Browser die Array-Länge verwenden.

Code kopieren Der Code lautet wie folgt:
if([1,2,3].splice(1).length == 0) //IE8 und niedrigere Versionen sind gleich 0, andere Versionen sind gleich 3, geben Sie if
ein {
var _splice = Array.prototype.splice;
​Array.prototype.splice = function(a){
​​if(arguments.length == 1) //Wenn es nur einen Parameter gibt
  {
Geben Sie _splice.call(this,a,this.length);
zurück   }sonst{
Geben Sie _splice.apply(this,arguments);
zurück   }
}
}

Diese Methode ändert die Optionen des Arrays, sodass Push, Pop, Shift und Unshift des Arrays (diese Methoden ändern auch die Optionen des Arrays) alle diese Methode aufrufen, um sie zu implementieren.

Hier gibt es etwas zu beachten:

Code kopieren Der Code lautet wie folgt:
var color = new Array('rot','blau','gelb','schwarz');
var color2 = color.splice(2,0,'brown','pink');
warning(color); // rot, blau, braun, rosa, gelb, schwarz, den Vorgang mit der gelben Option starten. Wenn die Löschung 0 ist, wird die hinzugefügte Option vor gelb eingefügt. Erinnern.


Schauen Sie sich hier bitte den Unterschied zwischen Splice und Slice, den Rückgabewert und die Auswirkungen auf das ursprüngliche Array an.
Das Obige ist eine komprimierte Version des Inhalts dieses Abschnitts, aber ich hoffe, dass er für alle hilfreich ist, wenn er diesen Abschnitt liest
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage