Symbol.isConcatSpreadable
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
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()
.
Exemple interactif
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.
Attributs de Symbol.isConcatSpreadable | |
---|---|
Écrivable | Non |
Énumérable | Non |
Configurable | Non |
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
Specification |
---|
ECMAScript Language Specification # sec-symbol.isconcatspreadable |
Compatibilité des navigateurs
BCD tables only load in the browser