Maison > Article > interface Web > Comment déterminer si une variable JavaScript est un tableau ou un code de réponse d'objet, explication détaillée
Comment déterminer si une variable JavaScript est un tableau ou un objet ?
Réponse :
1. Si vous utilisez simplement typeof pour vérifier la variable, qu'il s'agisse d'un tableau ou d'un objet, elle renverra 'objec'.
Une réponse possible à cette question est de vérifier si la variable est un objet, et de vérifier si la variable a une longueur numérique (la longueur peut également être 0 lorsqu'il s'agit d'un tableau vide).
Cependant, l'objet paramètre [objet arguments] (tous les paramètres passés à la fonction spécifiée) peut également être appliqué à la méthode ci-dessus. Techniquement parlant, l'objet paramètre n'est pas un tableau.
De plus, cette méthode ne fonctionne pas lorsqu'un objet possède un attribut .length.
// Real array 正在的数组 var my_array = []; // Imposter! 冒名顶替的! var my_object = {}; my_object.length = 0; // Potentially faulty 潜在的错误 function is_this_an_array(param) { if (typeof param === 'object' && !isNaN(param.length)) { console.log('Congrats, you have an array!'); } else { console.log('Bummer, not an array'); } } // Works 成功 is_this_an_array(my_array); // Works, but is incorrect 成功了,但是不正确 is_this_an_array(my_object);
2. Une autre réponse à cette question est d'utiliser une méthode plus cachée, en appelant la méthode toString() pour essayer de convertir la variable en une chaîne représentant son type.
Cette méthode est réalisable pour les tableaux réels ; lorsque l'objet paramètre est converti en chaîne et que [Arguments de l'objet] est renvoyé, la conversion échouera en outre,
La conversion échouera également pour les classes d'objets contenant des attributs de longueur numérique.
// Real array 真正的数组 var my_array = []; // Imposter! 冒名顶替的! var my_object = {}; my_object.length = 0; // Rock solid 坚如磐石(检验函数) function is_this_an_array(param) { if (Object.prototype.toString.call(param) === '[object Array]') { console.log('Congrats, you have an array!'); } else { console.log('Bummer, not an array'); } } // Works 成功了 is_this_an_array(my_array); // Not an array, yay! 不是数组(array)! is_this_an_array(my_object);
3. De plus, instanceof est une opération parfaitement adaptée dans un environnement DOM multi-frame qui peut s'avérer peu fiable.
var my_array = []; if (my_array instanceof Array) { console.log('Congrats, you have an array!'); }
4. Pour Javascript 1.8.5 (ECMAScript 5), le nom de variable .isArray() peut atteindre cet objectif
var my_array = []; if (Array.isArray(my_array)) { console.log('Congrats, you have an array!'); }
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!