Maison > interface Web > js tutoriel > Utilisez JavaScript pour déterminer si l'objet est un tableau

Utilisez JavaScript pour déterminer si l'objet est un tableau

怪我咯
Libérer: 2017-04-08 10:26:08
original
1331 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 Function, String, Number, Undefined, etc. Pour ces types de base, vous pouvez utiliser typeof pour les détecter. Par exemple, le code est le suivant :

1

2

3

4

5

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, si vous utilisez typeof pour détecter, ce n'est pas satisfaisant, car lorsque nous détectons un tableau ou un modèle régulier, le type renvoyé sera un objetobjet, comme indiqué dans le code suivant :

1

2

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 si un objet est une instance d'un tableau. La détection renverra un booléen si c'est le cas. un tableau, il retournera vrai, sinon si c'est le cas, il renvoie faux ; jetons un coup d'œil au code ci-dessus pour détecter s'il s'agit d'un tableau :

1

2

console.log([] instanceof Array);  // true

console.log(/\d+/g instanceof Array); // false

Copier après la connexion

Comme ci-dessus, vous pouvez voir qu'en utilisant instanceof peut en effet déterminer s'il s'agit d'un élément de tableau ;

3. attribut constructeur

En javascript, chaque objet possède un attribut constructeur, qui fait référence au constructeur. fonction qui initialise l'objet, comme déterminer le type d'un objet inconnu, On peut donc écrire une méthode comme suit, le code est le suivant :

1

2

3

4

5

6

7

8

9

10

11

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 le voir ci-dessus, vous pouvez également déterminer s'il s'agit d'un élément de 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 respectivement 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é ~

1

2

3

4

5

6

7

8

9

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 :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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 détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
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