Le symbole connu Symbol.isConcatSpreadable est utilisé pour configurer la façon dont un tableau est aplati lors d'une concaténation via la méthode  Array.prototype.concat().

Attributs de Symbol.isConcatSpreadable
Écrivable Non
Énumérable Non
Configurable Non

Description

Le symbole @@isConcatSpreadable (Symbol.isConcatSpreadable) peut être défini comme une propriété propre ou héritée. C'est une valeur booléenne qui contrôle le comportement des tableaux et des objets semblables à des tableaux :

  • Pour les tableaux, concat aplatira les tableaux par défaut. Symbol.isConcatSpreadable peut être utilisé pour obtenir le comportement opposé.
  • Pour les objets semblables à des tableaux, par défaut, il n'y aucune mise à plat. Symbol.isConcatSpreadable permet de forcer cette mise à plat.

Exemples

Tableaux (Array)

Par défaut, Array.prototype.concat() aplatit les tableaux pour le résultat de la concaténation :

var alpha = ['a', 'b', 'c'], 
    numérique = [1, 2, 3]; 

var alphaNumérique = alpha.concat(numérique); 

console.log(alphaNumérique); 
// Résultat : ['a', 'b', 'c', 1, 2, 3]

En définissant Symbol.isConcatSpreadable avec false, on peut désactiver le comportement par défaut :

var alpha = ['a', 'b', 'c'], 
    numérique = [1, 2, 3]; 

numérique[Symbol.isConcatSpreadable] = false;
var alphaNumérique = alpha.concat(numérique); 

console.log(alphaNumérique); 
// Résultat: ['a', 'b', 'c', [1, 2, 3] ]

Objets semblables à des tableaux

Pour les objets semblables à un tableau, par défaut, il n'y a pas de fusion. Il faut donc que Symbol.isConcatSpreadable vaille true pour aplatir le tableau :

var x = [1, 2, 3];

var fauxTableau = { 
  [Symbol.isConcatSpreadable]: true, 
  length: 2, 
  0: "coucou", 
  1: "monde" 
}

x.concat(fauxTableau); // [1, 2, 3, "coucou", "monde"]

Note : La propriété length indique ici le nombre de propriétés à ajouter au tableau.

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Symbol.isconcatspreadable' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'Symbol.isconcatspreadable' dans cette spécification.
Projet Aucune modification.

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 48Edge Support complet 15Firefox Support complet 48IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 48Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,