Heim > Artikel > Web-Frontend > JavaScript bestimmt, ob das Objekt ein Array ist
Das erste, woran wir denken werden, ist die Verwendung von typeof, um den Datentyp zu erkennen, aber für Grundtypen wie Funktion, String, Zahl, Undefiniert usw. Es kann mit typeof erkannt werden. Der Code lautet beispielsweise wie folgt:
function test(){} console.log(typeof 1); // number console.log(typeof test); // function console.log(typeof "yunxi"); // string console.log(typeof undefined); // undefined
Aber für Arrays oder reguläre Ausdrücke ist es nicht zufriedenstellend, wenn typeof verwendet wird, um sie zu erkennen, denn wann Wir erkennen Arrays oder reguläre Ausdrücke. Wenn ja, ist der zurückgegebene Typ ein Objektobjekt, wie im folgenden Code gezeigt:
console.log(typeof []); // object console.log(typeof /\d+/g); // object
Daraus können wir uns leicht vorstellen Verwenden von „instanceof“ zum Erkennen eines Objekts. Dieser Test gibt einen booleschen Wert zurück. Wenn es sich um ein Array handelt, gibt er „true“ zurück, andernfalls werfen wir einen Blick auf den obigen Code, um zu testen, ob dies der Fall ist ein Array:
console.log([] instanceof Array); // true console.log(/\d+/g instanceof Array); // false
Wie oben können Sie sehen, dass mit der Instanz von tatsächlich festgestellt werden kann, ob es sich um ein Array-Element handelt;
In Javascript, Jedes Objekt verfügt über ein Konstruktorattribut, das auf den Initialisierungskonstruktor des Objekts verweist, z. B. auf die Bestimmung des Typs des unbekannten Objekts. Daher können wir eine Methode wie folgt schreiben. Der Code lautet wie folgt:
function isArray(obj) { return typeof obj == 'object' && obj.constructor == Array } // 测试demo console.log(isArray([])); // true var a = {"a":1}; console.log(isArray(a)); // false var b = [1,2,3]; console.log(isArray(b)); // true console.log(isArray(/\d+/g));// false
Wie Sie oben sehen können, können Sie auch feststellen, ob es sich um ein Array handelt, indem Sie die Methode isArray Liezi aufrufen.
Wir können jetzt sehen, dass es für den zweiten und dritten Punkt so aussieht, als ob die Verwendung der Methode „instanceof“ bzw. des Konstruktorattributs bestimmen kann, ob es sich um ein Array handelt. Es gibt jedoch auch Ausnahmen, z. B. bei der Verwendung eines Cross-Arrays. Frame-Iframe Bei der Verwendung von Arrays auf der Seite schlägt dies fehl, da die in verschiedenen Iframes erstellten Arrays ihre Prototypattribute nicht miteinander teilen. Der folgende Codetest kann wie oben überprüft werden Es gibt für uns keine Möglichkeit festzustellen, ob ein Objekt ein Array ist, aber wir können anhand von ECMA262 erkennen, dass wir die Methode Object.prototype.toString.call() verwenden können, um festzustellen, ob ein Objekt ein Array ist:
var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); //这个写法IE下是不支持的,标准浏览器firefox,chrome下有 console.log(arr); // 打印出 ["1", "2", "3", "4", "5"] console.log(arr instanceof Array); // false console.log(arr.constructor === Array); // false
Das Obige ist der Inhalt von JavaScript, um zu bestimmen, ob das Objekt ein Array ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } // 代码调用 console.log(isArray([])); // true console.log(isArray([1,2,3])); // true var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray("1","2","3","4","5"); console.log(arr); // ["1","2","3","4","5"] console.log(isArray(arr)); // true