GeezerVison is showing developer.mozilla.org — Array : méthode statique isArray() - JavaScript | MDN
Array : méthode statique isArray()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthode statique Array.isArray() détermine si la valeur passée est un Array.
console.log(Array.isArray([1, 3, 5]));
// Résultat attendu : true
console.log(Array.isArray("[]"));
// Résultat attendu : false
console.log(Array.isArray(new Array(5)));
// Résultat attendu : true
console.log(Array.isArray(new Int16Array([15, 33])));
// Résultat attendu : false
value
-
La valeur dont on veut vérifier le type.
true si value est un Array ; sinon, false. false est toujours retourné si value est une instance de TypedArray.
Array.isArray() vérifie si la valeur passée est un Array. Elle effectue un contrôle de marque (branded check en anglais), similaire à l'opérateur in, pour un champ privé initialisé par le constructeur Array().
C'est une alternative plus robuste à instanceof Array, car elle évite les faux positifs et les faux négatifs :
Array.isArray() rejette les valeurs qui ne sont pas de véritables instances de Array, même si elles possèdent Array.prototype dans leur chaîne de prototypes — instanceof Array accepte ces valeurs, car il vérifie la chaîne de prototypes.
Array.isArray() accepte les objets Array construits dans un autre environnement d'exécution (realm en anglais) — instanceof Array retourne false pour ceux-ci, car l'identité du constructeur Array est différente entre les environnements.
Voir l'article « Déterminer avec une précision absolue si un objet JavaScript est un tableau » (angl.) pour plus de détails.
js
// Tous les appels suivant retournent true
Array.isArray([]);
Array.isArray([1]);
Array.isArray(new Array());
Array.isArray(new Array("a", "b", "c"));
Array.isArray(new Array(3));
// Une petite anecdote: Array.prototype lui même est un Array
Array.isArray(Array.prototype);
// Tous les appels suivant retournent false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(17);
Array.isArray("Array");
Array.isArray(true);
Array.isArray(false);
Array.isArray(new Uint8Array(32));
// Ceci n'est pas un tableau, car il n'a pas été créé avec
// la syntaxe littérale de tableau ou le constructeur Array
Array.isArray({ __proto__: Array.prototype });
Lors de la vérification d'une instance de Array, il est préférable d'utiliser Array.isArray() plutôt que instanceof, car cela fonctionne entre différents environnements d'exécution (realm en anglais).
js
const iframe = document.createElement("iframe");
document.body.appendChild(iframe);
const xArray = window.frames[window.frames.length - 1].Array;
const arr = new xArray(1, 2, 3); // [1, 2, 3]
// Vérification correcte pour Array
Array.isArray(arr); // true
// Le prototype de arr est xArray.prototype, qui est un
// objet différent de Array.prototype
arr instanceof Array; // false