Maison > interface Web > js tutoriel > le corps du texte

JavaScript détermine si l'objet est un tableau

黄舟
Libérer: 2017-02-24 13:09:49
original
869 Les gens l'ont consulté


1. typeof

La première chose à laquelle nous penserons est d'utiliser typeof pour détecter le type de données, mais pour les types de base tels que Function, String, Number, Indéfini etc. Il peut être détecté en utilisant typeof. Par exemple, le code est le suivant :

function test(){}
console.log(typeof 1); // number
console.log(typeof test); // function 
console.log(typeof "yunxi"); // string
console.log(typeof undefined); // undefined
Copier après la connexion

Mais pour les tableaux ou les expressions régulières, ce n'est pas satisfaisant si typeof est utilisé pour les détecter, car lorsque nous détecter des tableaux ou des expressions régulières Si tel est le cas, le type renvoyé sera un objet objet, comme indiqué dans le code suivant :

console.log(typeof []);  // object
console.log(typeof /\d+/g); // object
Copier après la connexion

2 Instanceof

À partir de là, nous pouvons facilement penser à utiliser. instanceof pour détecter un objet Qu'il s'agisse d'une instance d'un tableau, ce test renverra un booléen. S'il s'agit d'un tableau, il renvoie true, sinon il renvoie false. Jetons un coup d'œil au code ci-dessus pour tester s'il s'agit d'un objet. array :

console.log([] instanceof Array);  // true
console.log(/\d+/g instanceof Array); // false
Copier après la connexion

Comme ci-dessus, vous pouvez voir que l'utilisation de instanceof peut effectivement déterminer s'il s'agit d'un élément de tableau ;

3. Attribut du constructeur

En javascript, chacun. L'objet a un attribut constructeur, qui fait référence à Initialiser le constructeur de l'objet, par exemple pour déterminer le type de l'objet inconnu, afin que nous puissions écrire une méthode comme suit, le code est le suivant :

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
Copier après la connexion

Comme vous pouvez voir ci-dessus, vous pouvez également déterminer s'il s'agit d'un tableau en appelant la méthode isArray.

Nous pouvons maintenant voir que pour les deuxième et troisième points, il semble que l'utilisation respective de la méthode instanceof et de l'attribut constructor puisse déterminer s'il s'agit d'un tableau, mais il existe également des exceptions, comme lors de l'utilisation d'un cross- frame iframe Lors de l'utilisation de tableaux dans la page, cela échouera car les tableaux créés dans différentes iframes ne partageront pas leurs attributs de prototype entre eux ; le test de code suivant peut être vérifié ~

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
Copier après la connexion

comme ci-dessus Il y a aucun moyen pour nous de déterminer si un objet est un tableau ; mais nous pouvons voir dans ECMA262 que nous pouvons utiliser la méthode Object.prototype.toString.call() pour déterminer si un objet est un tableau le code suivant :

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
Copier après la connexion

Ce qui précède est le contenu de JavaScript pour déterminer si l'objet est un tableau. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal