L'objet global Array est utilisé pour créer des tableaux. Les tableaux sont des objets de haut-niveau (en termes de complexité homme-machine) semblables à des listes.

Créer un tableau

var fruits = ['Apple', 'Banana'];

console.log(fruits.length);
// 2

Accéder (via son index) à un élément du tableau

var first = fruits[0];
// Apple

var last = fruits[fruits.length - 1];
// Banana

Boucler sur un tableau

fruits.forEach(function(item, index, array) {
  console.log(item, index);
});
// Apple 0
// Banana 1

Ajouter à la fin du tableau

var newLength = fruits.push('Orange');
// ["Apple", "Banana", "Orange"]

Supprimer le dernier élément du tableau

var last = fruits.pop(); // supprime Orange (à la fin)
// ["Apple", "Banana"];

Supprimer le premier élément du tableau

var first = fruits.shift(); // supprime Apple (au début)
// ["Banana"];

Ajouter au début du tableau

var newLength = fruits.unshift('Strawberry') // ajoute au début
// ["Strawberry", "Banana"];

Trouver l'index d'un élément dans le tableau

fruits.push('Mango');
// ["Strawberry", "Banana", "Mango"]

var pos = fruits.indexOf('Banana');
// 1

Supprimer un élément par son index

var removedItem = fruits.splice(pos, 1); // supprime 1 élément à la position pos
                                        
// ["Strawberry", "Mango"]

Supprimer des éléments à partir d'un index

var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
console.log(vegetables); 
// ["Cabbage", "Turnip", "Radish", "Carrot"]

var pos = 1, n = 2;

var removedItems = vegetables.splice(pos, n); 
// n définit le nombre d'éléments à supprimer,
// à partir de la position pos

console.log(vegetables); 
// ["Cabbage", "Carrot"] (le tableau d'origine est changé)

console.log(removedItems); 
// ["Turnip", "Radish"] (splice retourne la liste des éléments supprimés)

Copier un tableau

var shallowCopy = fruits.slice(); // crée un nouveau tableau qui contient les éléments de fruits
// ["Strawberry", "Mango"]

Syntaxe

[element0, element1, ..., elementN]
new Array(element0, element1[, ...[, elementN]])
new Array(arrayLength)

Paramètres

element0, element1, ..., elementN
Un tableau est initialisé avec les éléments donnés, sauf dans le cas où un seul argument est passé au constructeur Array et que cet argument est un nombre. (Voir ci-après.) Notez que ce cas spécial s'applique aux tableaux créés avec le constructeur Array, et non aux tableaux créés avec la syntaxe crochets.
arrayLength
Si le seul argument passé au constructeur Array est un entier entre 0 et 232-1 (inclus), un nouveau tableau sera créé avec ce nombre d'éléments (note : le tableau sera créé avec arrayLength emplacements vides, et non avec de véritables valeurs undefined). Si l'argument est un nombre en dehors de la plage autorisée, une exception RangeError est levée.

Description

Les tableaux sont des objets qui servent de liste et possèdent plusieurs méthodes incorporées pour exécuter des opérations de parcours et de modification.

Ni la taille d'un tableau ni le types de ses éléments n'est fixé. Puisque la dimension d'un tableau peut augmenter ou diminuer à tout moment, et que les éléments du tableau peuvent être stockés à des emplacements non contigus, les tableaux ne sont pas garantis d'être compacts. En général, ce sont des caractéristiques pratiques, mais si ces fonctionnalités ne sont pas souhaitables pour votre cas d'utilisation, vous pouvez envisager d'utiliser des tableaux typés.

Les tableaux ne peuvent pas utiliser de chaîne de caractères comme indice (comme dans un tableau associatif) mais des entiers. Utiliser ou accéder à des index non entiers, en utilisant la notation avec crochets (ou avec point) ne va pas définir ou récupérer un élément sur le tableau lui-même, mais une variable associée à la  collection de propriétés d'objet de ce tableau.  Les propriétés du tableau et la liste de ses éléments sont séparées, et les opérations de parcours et de modification ne s'appliquent pas à ces propriétés.

Accéder aux éléments d'un tableau

Les tableaux sont indexés à partir de zéro: le premier élément d'un tableau a pour indice 0, et la position du dernier élément est donnée par length moins 1. Si on utilise un indice en dehors de cet intervalle, le résultat sera undefined (sous réserve qu'aucune propriété n'ait été ajoutée au préalable avec cet indice).

var arr = ["le premier élément", "le deuxième élément", "le dernier élément"];  
console.log(arr[0]);             // affiche "le premier élément"    
console.log(arr[1]);             // affiche "le deuxième élément"  
console.log(arr[arr.length - 1]);// affiche "le dernier élément"

Les éléments d'un tableau sont des propriétés d'objets de la même manière que toString est une propriété. Cependant, essayer d'accéder à un élément du tableau comme suit renverra une erreur car le nom de la propriété utilisé est invalide :

console.log(arr.0); // erreur de syntaxe

Ce comportement est tout à fait normal. En effet, il n'est pas possible d'accéder aux propriétés dont le nom commence par un chiffre avec cette notation (le point). Il est nécessaire d'utiliser la syntaxe avec les crochets pour accéder à ces propriétés. Ainsi, si pour un objet quelconque, on avait une propriété nommée '3d', on ne pourra y faire référence qu'en utilisant les crochets. Exemple :

var années = [1950, 1960, 1970, 1980, 1990, 2000, 2010];

console.log(années.0);  // erreur de syntaxe
console.log(années[0]); // fonctionne correctement
renderer.3d.setTexture(model, "personnage.png");   // erreur de syntaxe
renderer["3d"].setTexture(model, "personnage.png");// fonctionne correctement 

Dans cet exemple, on utilise des doubles quotes autour de 3d. On peut aussi utiliser les doubles quotes pour accéder aux éléments d'un tableau (ex. : années["2"] au lieu de années[2]), mais ce n'est pas obligatoire. Dans l'instruction années[2], le nombre sera converti en une chaîne de caractères par le moteur JavaScript. Pour cette raison, si on utilise les noms de propriété "2" et "02", on fera référence à deux propriétés différentes, et le fragment de code suivant renvoie donc true:

console.log(années["2"] != années["02"]); 

De manière similaire, les propriétés nommées avec des mots-clés réservés ne peuvent être consultées qu'en utilisant la syntaxe avec crochets :

var promise = {
  'var' : 'text',
  'array': [1, 2, 3, 4]
};

console.log(promise['var']);

Note spécifique à Firefox : Depuis Firefox 40.0a2, il est possible d'utiliser la notation avec le point pour accéder aux propriétés dont les noms ne sont pas des identifiants valides.

Relation entre length et les propriétés numériques

La propriété length d'un tableau est liée aux propriétés numériques du tableau. Plusieurs méthodes natives utilisent cette propriété : join(), slice(), indexOf(), etc. D'autres méthodes comme push() et splice() modifient le tableau et la propriété length.

var fruits = [];  
fruits.push("banane", "pomme", "pêche");  
      
console.log(fruits.length); // 3

Lorsqu'on définit une nouvelle propriété numérique pour un tableau, que l'index utilisé est valide et que celui-ci est dehors des limites actuelles du tableau, le moteur JavaScript mettra à jour la propriété length :

fruits[5] = "mangue";  
console.log(fruits[5]);  // "mangue"
console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] 
console.log(fruits.length); // 6 

On peut également modifier la propriété directement (cela n'ajoutera pas de nouveaux éléments) :

fruits.length = 10;  
console.log(Object.keys(fruits)); // ['0', '1', '2', '5']         
console.log(fruits.length);  // 10

En revanche, si on diminue la valeur de length, cela supprimera des éléments :

fruits.length = 2;
console.log(Object.keys(fruits)); // ['0', '1']
console.log(fruits.length); // 2

Pour plus d'informations sur le comportement de cette propriété, voir la page Array.length.

Création d'un tableau utilisant le résultat d'une correspondance

Le résultat d'une correspondance entre une expression rationnelle et une chaîne peut créer un tableau. Ce tableau possède des propriétés et des éléments qui fournissent des informations sur cette correspondance. Il est possible d'obtenir un tableau grâce aux méthodes RegExp.exec, String.match, and String.replace. Pour mieux comprendre le fonctionnement de ces propriétés et de ces éléments, on pourra utiliser l'exemple et le tableau qui suivent :

// Matche un "d" suivit par un ou plusieurs "b" et suivit d'un "d"
// Capture les "b" et le "d" qui suit
// Ignore la casse

var maRegexp = /d(b+)(d)/i;
var monTableau = maRegexp.exec("cdbBdbsbz");

console.log(monTableau);
// [ 0:"dbBd", 1:"bB", 2:"d", index:1, input:"cdbBdbsbz", length:3 ]

Les propriétés et les éléments retournés depuis cette correspondance sont les suivants :

Propriété/Élément Description Exemple
input Une propriété en lecture seule qui reflète la chaîne originale sur laquelle l'expression rationnelle a été appliquée. cdbBdbsbz
index Une propriété en lecture seule qui est l'indice de la correspondance dans la chaîne (les indices commencent à 0) 1
[0] Une propriété en lecture seule qui spécifie les derniers caractères correspondants. dbBd
[1], ...[n] Des éléments en lecture seule qui contiennent les groupes capturés, s'il y en a dans l'expression régulière. Le nombre de groupes capturés possibles est illimité. [1]: bB
[2]: d

Propriétés

Array.length
La propriété de longueur pour le constructeur Array, elle vaut 1.
get Array[@@species]
La fonction de construction utilisée pour créer les objets dérivés.
Array.prototype
Cette propriété permet d'ajouter des propriétés à tous les tableaux.

Méthodes

Array.from()
Cette méthode permet de créer une nouvelle instance d'Array à partir d'un objet semblable à un tableau ou d'un itérable.
Array.isArray()
Cette méthode renvoie true si la variable est un tableau, false sinon.
Array.of()
Cette méthode permet de créer une nouvelle instance d'Array à partir d'un nombre variable d'arguments (peu importe la quantité ou le type des arguments utilisés).

Instances d'Array

Toutes les instances d'Array héritent de Array.prototype. Le prototype du constructeur Array peut être modifié afin d'affecter l'ensemble des instances grâce à l'héritage.

Les propriétés

Array.prototype.constructor
Cette propriété définit la fonction qui crée le prototype d'un objet.
Array.prototype.length
Cette propriété renvoie le nombre d'éléments d'un tableau.
Array.prototype[@@unscopables]
Un symbole contenant les noms des propriétés à exclure lors d'une liaison effectuée avec with.

Les méthodes

Les mutateurs

Ces méthodes modifient le tableau :

Array.prototype.copyWithin()
Cette méthode copie une série d'éléments de tableau dans le tableau.
Array.prototype.fill()
Cette méthode remplie tous les éléments d'un tableau avec une même valeur, éventuellement entre un indice de début et un indice de fin.
Array.prototype.pop()
Cette méthode supprime le dernier élément d'un tableau et retourne cet élément.
Array.prototype.push()
Cette méthode ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle longueur du tableau.
Array.prototype.reverse()
Cette méthode renverse l'ordre des éléments d'un tableau - le premier élément devient le dernier, et le dernier devient le premier. Le tableau est modifié par cette méthode.
Array.prototype.shift()
Cette méthode supprime le premier élément d'un tableau et retourne cet élément.
Array.prototype.sort()
Cette méthode trie en place les éléments d'un tableau et retourne le tableau.
Array.prototype.splice()
Cette méthode permet d'ajouter ou de retirer des éléments d'un tableau.
Array.prototype.unshift()
Cette méthode permet d'ajouter un ou plusieurs éléments au début d'un tableau et renvoie la nouvelle longueur du tableau.

Les accesseurs

Ces méthodes ne modifient pas l'état du tableau et en retournent une représentation.

Array.prototype.concat()
Cette méthode renvoie un nouveau tableau constitué de ce tableau concaténé avec un ou plusieurs autre(s) tableau(x) et/ou valeur(s).
Array.prototype.includes()
Cette méthode détermine si le tableau contient ou non un certain élément. Elle renvoie true ou false selon le cas de figure.
Array.prototype.indexOf()
Cette méthode retourne le premier (plus petit) index d'un élément égal à la valeur passée en paramètre à l'intérieur du tableau, ou -1 si aucun n'a été trouvé.
Array.prototype.join()
Cette méthode concatène tous les éléments d'un tableau en une chaîne de caractère.
Array.prototype.lastIndexOf()
Cette méthode retourne le dernier (plus grand) index d'un élément égal à la valeur passée en paramètre à l'intérieur du tableau, ou -1 si aucun n'a été trouvé.
Array.prototype.slice()
Cette méthode extrait une portion d'un tableau pour retourner un nouveau tableau constitué de ces éléments.
Array.prototype.toSource()
Cette méthode renvoie la représentation littérale du tableau spécifié ; vous pouvez utiliser cette valeur pour créer un nouveau tableau. Elle surcharge la méthode Object.prototype.toSource().
Array.prototype.toString()
Cette méthode renvoie une chaîne de caractères représentant le tableau et ses éléments. Elle surcharge la méthode Object.prototype.toString().
Array.prototype.toLocaleString()
Cette méthode retourne une chaîne de caractères représentant le tableau et ses éléments en tenant compte de la locale. Elle surcharge la méthode Object.prototype.toLocaleString().

Les méthodes d'itération

Plusieurs méthodes utilisent des fonctions comme argument. Ces fonctions sont utilisées afin de traiter, d'une façon ou d'une autre, chaque élément du tableau. Lorsque ces méthodes sont invoquées, on évalue la longueur du tableau et on traite chacun des éléments dont l'indice est inférieur à la longueur (les éléments ajoutés en cours de route ne seront pas traités). Les autres modifications apportées au tableau (affecter une valeur ou supprimer un élément) peuvent avoir un impact sur les traitements des éléments suivants. Bien que ce comportement soit bien défini pour les différentes méthodes, afin de ne pas complexifier le code outre-mesure, lorsqu'on modifiera un tableau, on en créera une copie avant d'invoquer une telle méthode.

Array.prototype.entries()
Cette méthode renvoie un nouvel objet Array Iterator qui contient les paires clef/valeur pour chaque index du tableau.
Array.prototype.every()
Cette méthode renvoie true si chaque élément du tableau satisfait la fonction de test passée en paramètre.
Array.prototype.filter()
Cette méthode crée un nouveau tableau contenant tous les éléments du tableau pour lesquels la fonction de filtrage passée en argument retourne true.
Array.prototype.find()
Cette méthode renvoie la valeur d'un élément trouvé dans le tableau et qui satisfait la fonction de test passée en paramètre, undefined sinon.
Array.prototype.findIndex()
Cette méthode renvoie l'index d'un élément trouvé dans le tableau qui satisfait la fonction de test passée en paramètre ou -1 si aucun ne la satisfait.
Array.prototype.forEach()
Cette méthode appelle une fonction sur chacun des éléments du tableau.
Array.prototype.keys()
Cette méthode retourne un nouvel Array Iterator qui contient les indices pour chaque élément dans le tableau.
Array.prototype.map()
Cette méthode crée un nouveau tableau contenant les images de chaque élément du tableau de départ par la fonction passée en paramètre.
Array.prototype.reduce()
Cette méthode applique une fonction sur un accumulateur et sur chaque valeur du tableau (de gauche à droite) de façon à obtenir une unique valeur à la fin.
Array.prototype.reduceRight()
Cette méthode applique une fonction sur un accumulateur et sur chaque valeur du tableau (de droite à gauche) de façon à obtenir une unique valeur à la fin.
Array.prototype.some()
Cette méthode renvoie true si au moins un élément du le tableau satisfait la fonction de test passée en paramètre.
Array.prototype.values()
Cette méthode renvoie un nouvel objet Array Iterator qui contient les valeurs de chaque indice du tableau.
Array.prototype[@@iterator]()
Cette méthode renvoie un nouvel objet Array Iterator qui contient les valeurs de chaque indice du tableau.

Les méthodes génériques de manipulation de tableaux

Attention : Ces méthodes génériques ne sont pas standard. Elles sont dépréciées et seront retirées dans un avenir proche. Celles-ci ne peuvent être utilisées sur tous les navigateurs. Toutefois, il existe un shim disponible sur GitHub.

Parfois, on peut vouloir appliquer des méthodes pour les tableaux sur des chaînes ou d'autres objets semblables aux tableaux (ex. : l'objet arguments). Une chaîne sera donc traitée comme un tableau de caractères. Ainsi, si on souhaite vérifier que chaque caractère d'une chaîne str est bien une lettre comprise entre 'a' et 'z', on pourra utiliser :

function estUneLettre(caractère) {
  return caractère >= 'a' && caractère <= 'z';
}

if (Array.prototype.every.call(str, estUneLettre)) {
  console.log("La chaîne '" + str + "' ne contient que des lettres entre a et z!");
}

Cette notation étant plutôt verbeuse, une notation raccourcie a été introduite avec JavaScript 1.6 :

if (Array.every(str,estUneLettre)) {
  console.log("La chaîne '" + str + "' ne contient que des lettres entre a et z !");
}

Des méthodes génériques sont également disponibles pour les String.

Cette fonctionnalité ne fait pas partie du standard ECMAScript et n'est pas prise en charge par les navigateurs qui ne sont pas basés sur Gecko. Comme alternative standard, vous pouvez convertir votre objet en véritable tableau grâce à la méthode Array.from() (attention, cette méthode n'est pas supportée dans les anciens navigateurs) :

if (Array.from(str).every(estUneLettre)) {
  console.log("La chaîne '" + str + "' contient uniquement des lettres !");
}

Exemples

Créer un tableau

Dans l'exemple suivant, on crée un tableau tableauMsg, d'une longueur nulle. Ensuite, on lui affecte des valeurs pour tableauMsg[0] et tableauMsg[99], ce qui aura pour effet de modifier la propriété length (qui vaudra alors 100).

var tableauMsg = [];
tableauMsg[0] = 'Coucou';
tableauMsg[99] = 'monde';

if (tableauMsg.length === 100) {
  console.log('La longueur du tableau vaut 100.');
}

Créer un tableau à deux dimensions

Dans l'exemple qui suit, on crée un plateau d'échec grâce à un tableau en deux dimensions qui contient des caractères. Le premier mouvement est effectué en copiant 'p' de (6,4) vers (4,4). La position anciennement occupée par le pion (6,4) devient vide.

var plateau = [ 
  ['T','C','F','R','K','F','C','T'],
  ['P','P','P','P','P','P','P','P'],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  ['p','p','p','p','p','p','p','p'],
  ['t','c','f','k','r','f','c','t'] ];

console.log(plateau.join('\n') + '\n\n');

// On déplace le pion de deux cases en avant 2
plateau[4][4] = plateau[6][4];
plateau[6][4] = ' ';
console.log(plateau.join('\n'));

Voici le résultat affiché :

T,C,F,R,K,F,C,T
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
t,c,f,k,r,f,c,t

T,C,F,R,K,F,C,T
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , ,p, , , 
 , , , , , , , 
p,p,p,p, ,p,p,p
t,c,f,k,r,f,c,t

Utiliser un tableau pour tabuler un ensemble de valeurs

values = [];
for (var x = 0; x < 10; x++){
 values.push([
  2 ** x,
  2 * x ** 2
 ])
};
console.table(values)

Résulte en

0	1	0
1	2	2
2	4	8
3	8	18
4	16	32
5	32	50
6	64	72
7	128	98
8	256	128
9	512	162

(Le première colonne est l'index)

Spécifications

Spécification État Commentaires
ECMAScript 1st Edition (ECMA-262) Standard Définition initiale
ECMAScript 5.1 (ECMA-262)
La définition de 'Array' dans cette spécification.
Standard Ajout de nouvelles méthodes : Array.isArray, indexOf, lastIndexOf, every, some, forEach, map, filter, reduce, reduceRight
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Array' dans cette spécification.
Standard Ajout de nouvelles méthodes : Array.from, Array.of, find, findIndex, fill, copyWithin
ECMAScript 2016 (ECMA-262)
La définition de 'Array' dans cette spécification.
Standard Ajout de la méthode Array.prototype.includes().
ECMAScript Latest Draft (ECMA-262)
La définition de 'Array' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
concatChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
copyWithinChrome Support complet 45Edge Support complet 12Firefox Support complet 32IE Aucun support NonOpera Support complet 32Safari Support complet 9WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 32Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 4.0.0
entriesChrome Support complet 38Edge Support complet OuiFirefox Support complet 28IE Aucun support NonOpera Support complet 25Safari Support complet 8WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 28Opera Android Support complet OuiSafari iOS Support complet 8Samsung Internet Android Support complet Ouinodejs Support complet 0.12
everyChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
fillChrome Support complet 45Edge Support complet OuiFirefox Support complet 31IE Aucun support NonOpera Support complet OuiSafari Support complet 8WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 31Opera Android Support complet OuiSafari iOS Support complet 8Samsung Internet Android Support complet Ouinodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.
filterChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
findChrome Support complet 45Edge Support complet OuiFirefox Support complet 25IE Aucun support NonOpera Support complet 32Safari Support complet 8WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet 8Samsung Internet Android Support complet Ouinodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.
findIndexChrome Support complet 45Edge Support complet OuiFirefox Support complet 25IE Aucun support NonOpera Support complet 32Safari Support complet 8WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet 8Samsung Internet Android Support complet Ouinodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.
flat
Expérimentale
Chrome Support complet 69Edge Aucun support NonFirefox Support complet 62IE Aucun support NonOpera Support complet 56Safari Support complet 12WebView Android Support complet 69Chrome Android Support complet 69Edge Mobile Aucun support NonFirefox Android Support complet 62Opera Android Support complet 56Safari iOS Support complet 12Samsung Internet Android Aucun support Nonnodejs Aucun support Non
flatMap
Expérimentale
Chrome Support complet 69Edge Aucun support NonFirefox Support complet 62IE Aucun support NonOpera Support complet 56Safari Support complet 12WebView Android Support complet 69Chrome Android Support complet 69Edge Mobile Aucun support NonFirefox Android Support complet 62Opera Android Support complet 56Safari iOS Support complet 12Samsung Internet Android Aucun support Nonnodejs Aucun support Non
forEachChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
fromChrome Support complet 45Edge Support complet OuiFirefox Support complet 32IE Aucun support NonOpera Support complet OuiSafari Support complet 9WebView Android ? Chrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 32Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 4.0.0
includesChrome Support complet 47Edge Support complet 14Firefox Support complet 43IE Aucun support NonOpera Support complet 34Safari Support complet 9WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet 14Firefox Android Support complet 43Opera Android Support complet 34Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 6.0.0
Support complet 6.0.0
Support complet 5.0.0
Désactivée
Désactivée From version 5.0.0: this feature is behind the --harmony runtime flag.
indexOfChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
isArrayChrome Support complet 5Edge Support complet OuiFirefox Support complet 4IE Support complet 9Opera Support complet 10.5Safari Support complet 5WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
joinChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
keysChrome Support complet 38Edge Support complet OuiFirefox Support complet 28IE Aucun support NonOpera Support complet 25Safari Support complet 8WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 28Opera Android Support complet OuiSafari iOS Support complet 8Samsung Internet Android Support complet Ouinodejs Support complet 0.12
lastIndexOfChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
lengthChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
mapChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
observe
ObsolèteNon-standard
Chrome Aucun support 36 — 52Edge Aucun support NonFirefox Aucun support NonIE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
ofChrome Support complet 45Edge Support complet OuiFirefox Support complet 25IE Aucun support NonOpera Support complet OuiSafari Support complet 9WebView Android Support complet OuiChrome Android Support complet 39Edge Mobile Support complet OuiFirefox Android Support complet 25Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet 4.0nodejs Support complet 4.0.0
popChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
prototypeChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
pushChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
reduceChrome Support complet OuiEdge Support complet OuiFirefox Support complet 3IE Support complet 9Opera Support complet 10.5Safari Support complet 4WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
reduceRightChrome Support complet OuiEdge Support complet OuiFirefox Support complet 3IE Support complet 9Opera Support complet 10.5Safari Support complet 4WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
reverseChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
shiftChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
sliceChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
someChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
sortChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
spliceChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
toLocaleStringChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
toSource
Non-standard
Chrome Aucun support NonEdge Aucun support NonFirefox Support complet 1IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Support complet 4Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
toStringChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1IE Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
unobserve
ObsolèteNon-standard
Chrome Aucun support 36 — 52Edge Aucun support NonFirefox Aucun support NonIE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonEdge Mobile Aucun support NonFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
unshiftChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 5.5Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui
valuesChrome Support complet 66Edge Support complet OuiFirefox Support complet 60IE Aucun support NonOpera Support complet 53Safari Support complet 9WebView Android Support complet 66Chrome Android Support complet 66Edge Mobile Support complet OuiFirefox Android Support complet 60Opera Android Support complet 53Safari iOS Support complet 9Samsung Internet Android Aucun support Nonnodejs Support complet 10.9.0
Support complet 10.9.0
Support complet 6.5.0
Notes Désactivée
Notes The --harmony-array-prototype-values flag is required; the --harmony flag is not sufficient in this case.
Désactivée From version 6.5.0: this feature is behind the --harmony-array-prototype-values runtime flag.
Aucun support 0.12 — 4.0.0
@@iteratorChrome Support complet 38Edge ? Firefox Support complet 36
Support complet 36
Aucun support 27 — 36
Notes Autre nom
Notes A placeholder property named @@iterator is used.
Autre nom Cette fonctionnalité utilise le nom non-standard : @@iterator
Aucun support 17 — 27
Notes Autre nom
Notes A placeholder property named iterator is used.
Autre nom Cette fonctionnalité utilise le nom non-standard : iterator
IE Aucun support NonOpera Support complet 25Safari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile ? Firefox Android Support complet 36
Support complet 36
Aucun support 27 — 36
Notes Autre nom
Notes A placeholder property named @@iterator is used.
Autre nom Cette fonctionnalité utilise le nom non-standard : @@iterator
Aucun support 17 — 27
Notes Autre nom
Notes A placeholder property named iterator is used.
Autre nom Cette fonctionnalité utilise le nom non-standard : iterator
Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 0.12
@@speciesChrome ? Edge ? Firefox Support complet 48IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Support complet 48Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs Support complet 6.5.0
Support complet 6.5.0
Support complet 6.0.0
Désactivée
Désactivée From version 6.0.0: this feature is behind the --harmony runtime flag.
@@unscopablesChrome ? Edge ? Firefox Support complet 48IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Support complet 48Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs Support complet 0.12

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Cette fonctionnalité utilise un nom non-standard.
Cette fonctionnalité utilise un nom non-standard.

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
Dernière mise à jour par : gloucklegnou,