Heim > Artikel > Web-Frontend > Zusammenfassung der Unterscheidung zwischen Object- und Aarry-Methoden in JS
1. Häufig auftretende Probleme:
Bei der Beurteilung des Typs eines Objekts in JS wird normalerweise typeof verwendet. Zu diesem Zeitpunkt tritt das Problem auf, da typeof() beim Identifizieren eines Arrays zurückgegeben wird .Objekt, daher sind für die Beurteilung, ob ein Objekt ein Array in JS ist
, einige spezielle Verarbeitungsmethoden erforderlich. Im Folgenden werden sechs Verarbeitungsmethoden vorgestellt, die ich zusammengefasst habe.
2. Direkt zur Sache
Um bei der Entwicklung festzustellen, ob ein Objekt ein Array ist, empfiehlt sich die Verwendung der folgenden Funktion:
function isArray(obj){ if(Array.isArray){ return Array.isArray(obj); }else{ return Object.prototype.toString.call(obj)==="[object Array]"; } }
Die obige Funktion ist praktisch für Menschen, die Probleme lösen möchten. Ich werde die sechs Methoden im Folgenden ausführlich beschreiben, da der Prüfer möglicherweise umfassende Kenntnisse benötigt von Ihnen während des Interviews;
Detaillierte Erklärung der drei und sechs Lösungen:
(1) Methode 1: Versuchen Sie, die Variable mit der toString-Methode
umzuwandeln einen String, der seinen Typ darstellt, indem Sie die Methode toString() aufrufen. Diese Methode ist für echte Arrays möglich; wenn das Parameterobjekt in eine Zeichenfolge umgewandelt wird, die [Objektargumente] zurückgibt, schlägt die Konvertierung auch für Objektklassen fehl, die numerische Längenattribute enthalten.
Die Methode ist wie folgt:
nbsp;html> <title>Array的判断方法</title> <meta> <script> function isArrayOne(arr){ return <span style="color:#cc0000;">Object.prototype.toString.call(arr) === "[object Array]"; } var obj = {"k1":"v1"}; var arr = [1,2]; console.log("对象的结果:"+isArrayOne(obj)); console.log("数组的结果:"+isArrayOne(arr)); </script>
Das Ergebnis ist wie gezeigt:
Hinweis: Es wird empfohlen, „=== gleich zu gleich“ statt „== gleich zu gleich“ zu verwenden, da dies effizienter ist!
(2) Methode 2: Über isArray:
Mit Javascript 1.8.5 (ECMAScript 5) kann der Variablenname .isArray() diesen Zweck erreichen, sofern diese Funktion unterstützt wird. Tatsächlich ist isArray die Kapselung der
Methode eins.
Die Verwendung ist sehr einfach:
Array.isArray(obj); //obj ist das zu erkennende Objekt
Gibt true oder false zurück, wenn wahr, ist es wahr ein Array
(3) Methode 3: Beurteilung anhand des Instanzoperators,
Hinweis: Die linke Seite des Instanzoperators ist das untergeordnete Objekt (das zu testende Objekt) und die rechte Seite ist der übergeordnete Konstruktor (hier Array),
Das heißt: untergeordnete Objektinstanz des übergeordneten Konstruktors
Instanz: Instanz: Jedes mit dem neuen Konstruktor () erstellte Objekt wird als Instanz des Konstruktors bezeichnet
Ich war schon lange verwirrt, daher ist es besser, direkt auf den Code zu schauen:
nbsp;html> <meta> <meta> <meta> <meta> <meta> <title>Document</title> <script> var obj = {"k1":"v1"}; var arr = [1,2]; console.log("Instanceof处理对象的结果:"+(obj instanceof Array)); console.log("Instanceof处理数组的结果:"+(arr instanceof Array)); </script>
Die laufenden Ergebnisse lauten wie folgt:
(4) Verwenden Sie die Funktion isPrototypeOf()
Prinzip: Erkennen Sie, ob ein Objekt der Prototyp eines Arrays ist (oder sich im Array befindet). Prototypenkette. Es kann nicht nur das direkte übergeordnete Objekt erkennen, sondern auch alle übergeordneten Objekte in der gesamten Prototypenkette.
Verwendungsmethode: parent.isPrototypeOf(child), um zu erkennen, ob das übergeordnete Objekt der Prototyp des untergeordneten Objekts ist ;
Es ist zu beachten, dass die von der Funktion isPrototypeOf() implementierte Funktion dem instancof-Operator sehr ähnlich ist
Array.prototype.isPrototypeOf( arr) //true bedeutet ein Array, false ist kein Array
(5) Verwenden Sie den Konstruktor-Konstruktor
Spezifischer Code:
nbsp;html> <meta> <meta> <meta> <meta> <meta> <title>Document</title> <script> var obj = {'k':'v'}; var t1 = new Array(1); var t2 = t1; console.log(obj.constructor == Array); console.log(t1.constructor == Array); console.log(t2.constructor == Array); </script>(6) Verwenden Sie typeof (Objekt) + Typnamen zur Beurteilung:
Der Code lautet wie folgt:
Das Ergebnis ist wie folgt:nbsp;html> <meta> <meta> <meta> <meta> <meta> <title>Document</title> <script> function isArrayFour(arr){ if(typeof(arr)==="object"){ if(arr.concat){ return "This is Array"; }else{ return "This Not Array"; } } } var arr = [1]; var obj = {'k':'v'}; console.log(typeof(arr)); console.log(typeof(obj)); console.log(isArrayFour(arr)); console.log(isArrayFour(obj)); </script>
Diese Methode weist tatsächlich einige Einschränkungen auf Die Schüler können es möglicherweise sofort lösen, d 🎜>
Die obige Zusammenfassung der sechs Möglichkeiten zur Unterscheidung von Object und Aarry in JS ist der gesamte vom Herausgeber geteilte Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen können.
Weitere Artikel zur Zusammenfassung der JS-Methode zur Unterscheidung von Object und Aarry finden Sie auf der chinesischen PHP-Website!